即使使用POST请求,表单提交时也会出现405错误

时间:2015-01-30 12:58:45

标签: javascript ajax

我使用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");
            }
        });
    });
});

2 个答案:

答案 0 :(得分:0)

您的代码实际上是在尝试发出跨域(CORS)请求,而不是普通的POST。现代浏览器只允许Ajax调用与HTML页面在同一域中的服务。

如何解决?

最简单的方法是在服务器上启用CORS(启用必要的标头)。

如果您没有服务器端访问权限,则可以从其他地方镜像Web服务,然后在那里启用CORS。

答案 1 :(得分:0)

你不能将jsonp与POST一起使用,它只是不起作用。 如果此链接针对您正在调用的相同应用程序 - 请使用json数据类型。

如果没有,您必须在目标服务器上启用(通过应用特定的heards)跨域请求。这只能在https://myServerURl服务器内部完成。您只能使用json数据类型,而不是jsonp

相关文章: How to use type: "POST" in jsonp ajax call