我正试图在我的网页上创建一个链接,当访问该链接时,将发送一个具有非常规方法的HTTP请求(为了示例起见,该方法为POSTS)。我知道常规HTML表单只支持GET和POST,AJAX应该支持PUT和delete。有没有一种方法可以用不同于这些标准HTTP方法的方法发出请求?提前谢谢。
===============
在提示之后,我调整了我的页面,使其具有以下HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.ajax({url:"http://www.example.php",type:"POSTS",dataType:"html"});
});
});
</script>
</head>
<body>
<button>Send Request</button>
</body>
</html>
令人惊讶的是,这在Chrome和Firefox中不起作用,但在IE的更新版本中起作用:当我尝试使用Firefox和Chrome发出请求时,浏览器发出了一个带有OPTIONS方法和以下标题的请求:
Access-Control-Request-Method: POSTS
只有IE根据要求发出了请求-使用POSTSHTTP方法。
===
事实证明,前面提到的HTML不起作用。(没有发出具有自定义标头的所需请求)。正如我上面提到的,firefox和chrome发出带有访问控制请求方法头的初始请求,而IE根本不发出请求。我调整了浏览器安全设置(启用了"跨域访问数据源"),但浏览器仍然没有发出请求。我猜浏览器设置需要进一步调整,有人知道如何解决这个问题吗?
如果使用javascript,请快速回答"是"。
方法与状态代码一起由标准定义,但它们可以扩展。比如增加方法词汇的webdav。
并非所有浏览器都支持任意的http方法,尤其是旧版本的IE(惊喜!)
因此,您可以简单地使用一个链接/按钮来调用一个javascript函数,该函数会发出http请求。
简单使用jQuery:
var request = $.ajax({
url: "script.php",
type: "POSTS",
data: { id : menuId },
dataType: "html"
});
request.done(function( msg ) {
$( "#log" ).html( msg );
});
request.fail(function( jqXHR, textStatus ) {
alert( "Request failed: " + textStatus );
});