我使用AJAX调用将JSON格式的表单数据提交给第三方服务器,但我收到 405错误(方法不允许)。你能帮忙吗?
我的表单如下:
<form name="freeTrial" id="testForm" role="form" >
------------
<input type="submit" class="btn" value="Submit" id="submitButton"/>
</form>
我使用的脚本是:
$(document).ready(function(){
alert("page load");
$("#submitButton").click(function(e){
e.preventDefault()
alert("inside function");
var MyForm = $("#testForm").serializeJSON();
alert("MyForm "+JSON.stringify(MyForm));
jQuery.ajax({
url : "https://myServerURl/accounts",
type: 'POST',
dataType: 'jsonp',
data : MyForm,
success:function(data){
alert(data);
},
error: function(jqXHR, textStatus, errorThrown){
console.log("failure");
alert("failure");
}
});
});
});
答案 0 :(得分:0)
您的代码实际上是在尝试发出跨域(CORS)请求,而不是普通的POST。现代浏览器只允许Ajax调用与HTML页面在同一域中的服务。
如何解决?
最简单的方法是在服务器上启用CORS(启用必要的标头)。
如果您没有服务器端访问权限,则可以从其他地方镜像Web服务,然后在那里启用CORS。
答案 1 :(得分:0)
你不能将jsonp
与POST一起使用,它只是不起作用。
如果此链接针对您正在调用的相同应用程序 - 请使用json数据类型。
如果没有,您必须在目标服务器上启用(通过应用特定的heards)跨域请求。这只能在https://myServerURl
服务器内部完成。您只能使用json
数据类型,而不是jsonp
。