【问题标题】:ajax jsonp Get request skips scripts at time of call but fires them laterajax jsonp Get 请求在调用时跳过脚本但稍后触发它们
【发布时间】:2013-03-13 08:26:12
【问题描述】:

我正在运行 ajax/jsonp/Get 请求。使用提琴手我可以看到一个正确的响应( jsonpCallBack({"GetMetadataResult":{"TotalPages":"20"}}); )但是在请求时,ajax调用只是返回没有运行成功,错误,完成, 或 callbackFnt 脚本。稍后,在我的函数完成后,运行 ajax 成功脚本。不知道我做错了什么。

function getRequest( url, data )
{
    var ajaxRequest = undefined;  // The variable that makes Ajax possible

    //"Content-type": "application/json; charset=utf-8",
    var response =  $.ajax( {
        "url": url,
        "type": "GET",
        "dataType": "jsonp",
        "data": data,
        "contentType": "application/json; charset=utf-8",
        "jsonpCallback": "jsonpCallBack",
        "success": function ( r )
        {
            return r;
        },

        "complete": function ( r )
        {
            for ( var i = 0; i < r.count; i++ )
            {
                return r;
            }
        },
        "error": function ( xhr )
        {
            return false;
        }            
    } );

    return true;
}

function jsonpCallBack( r )
{
    return r;
}

【问题讨论】:

  • 看起来 ajax 正在发送消息,但在返回之前没有等待响应。当它得到响应时,它会运行成功脚本,但是到那时我的代码的其余部分已经运行了。
  • 还应该提到 async:false 没有帮助

标签: ajax jsonp


【解决方案1】:

我不认为你的代码做错了什么,但设计是。正如您所发现的那样,没有同步 JSONP 这样的东西。来自http://api.jquery.com/jQuery.ajax/

“跨域请求和dataType: "jsonp"请求不支持同步操作”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 2013-10-17
    • 2020-08-16
    • 2015-06-22
    • 2013-10-20
    • 1970-01-01
    相关资源
    最近更新 更多