【问题标题】:Cross domain JSONP post gives console error跨域 JSONP 帖子给出控制台错误
【发布时间】:2012-12-12 12:37:24
【问题描述】:

我想做一个跨域的帖子,看来我必须使用JSONP。我的帖子确实有效,但 Firefox 控制台出现错误。为什么我的 PHP 正确接收数据时脚本说它“失败”?

function post_data(data1, data2, data3) {
    $.ajax({
        type: 'POST',
        dataType: 'jsonp', 
        data: "data1=" + data1 + "&data2=" + data2 + "&data3=" + data3, 
        url: 'http://www.thedomainname.com/recievedata.php',
        success: function(data){
            alert('succes!!');
        },
        error: function(){
            alert('fail!');
        }
    });
    return false;
};

它触发错误函数;在这种情况下,它会提示“失败!”

【问题讨论】:

  • 控制台出现什么错误?
  • 它触发错误函数;在这种情况下,它会提示“失败!”
  • 我真的不知道为什么,但是如果您进行跟踪,您会看到请求使用“jsonp”将其类型从 POST 更改为 GET,因此,如果服务器不期望该请求,您将收到 404 错误响应,并将启动“错误”事件。我所做的是将其更改为“文本”并在成功功能上,对检索到的数据进行评估......我希望这对你有帮助......我差点忘了:这个“解决方案”不起作用在 IExplorer 上

标签: jquery json cross-domain jsonp


【解决方案1】:

您可以尝试指定以下参数(jsonpjsonpcallback),以便在jsonp请求成功时设置自定义函数:

function jsonpCallback(response){
    console.log(response);
}

function post_data(data1, data2, data3) {
    $.ajax({
        type: 'POST',
        dataType: 'jsonp', 
        data: "data1=" + data1 + "&data2=" + data2 + "&data3=" + data3, 
        url: 'http://www.thedomainname.com/recievedata.php',
        jsonp: false,
        jsonpCallback: 'jsonpCallback',
        error: function(){
            alert('fail!');
        }
    });
    return false;
};

看这里并通过jsonp搜索:http://api.jquery.com/jQuery.ajax/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 2013-04-08
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多