2

我正在尝试编写代码来发送 jquery AJAX POST 请求,但在模拟我看到的一些示例时遇到了一些麻烦。

我想向第三方网站发送一个发布请求,然后调用一个将 responseText 写入 div 的函数,这是非常基本的东西。

function addSearch(searchTerm) {
    $.ajax({
        accept: "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        url: "http://www.website.com",
        contentType: "application/x-www-form-urlencoded",
        beforeSend : function (xhr) {
            xhr.setRequestHeader("AcceptLanguage", "en-US,en;q=0.5");
            xhr.setRequestHeader("AcceptEncoding", "gzip, deflate");
        },
        type: "POST",
        data: createBody(searchTerm),
        complete: doStuffOnComplete(xhr, status)
    });
}

function doStuffOnComplete(xhr, status) {
    var response = xhr.responseText;
    $("#content").append(response);
}

我正在关注我在这里看到的其他一些基本示例。虽然我在 beforeSend 事件中没有收到有关“xhr”变量的错误,但在调用脚本时我在 Complete 中收到错误,说 xhr 未定义。

我确定我只是搞砸了一些简单的事情,但一般来说对 Jquery、Ajax 或 javascript 没有太多经验,我不确定是什么。

4

2 回答 2

1

我希望您对 url 是第三方的事实有疑问。

尝试dataType: 'jsonp'type: "POST".

另外,我不会使用“完成”,而是使用“成功”和“错误”:

[...]
    type: "POST",
    dataType: "jsonp",
    data: createBody(searchTerm),
    success: function(data) {
        console.log(data);
    }
    error: function(data) {
        console.error(data);
    }
});
于 2013-08-15T20:20:55.680 回答
0

对于以后遇到此问题的任何人来说,有趣的 PSA。原来这个特殊的位是不可能的!POST无法向外部域发出请求,因为它违反了同源策略GET可以使用向外部域发出请求,JSONP但遗憾的是无法通过客户端的 POST 来执行此操作。

我见过的最好的解决方法(除了使用JSONP GET请求,在我的情况下这是不可能的)是将POST请求发送到您自己的服务器,然后将请求发送到外部域。

于 2013-08-16T19:05:14.007 回答