jQuery ajax函数无法正常工作没有请求发送并且没有收到错误

时间:2015-01-21 00:18:53

标签: javascript php jquery ajax

我有一些代码用于调用$.ajax

function doajax(url, dataType, data, method, context, callback, block) {
    block = typeof block !== 'undefined' ? block : true;
    if (block) {
        showOverlay();
    }
    var settings = {
        dataType: dataType,
        data: data,
        type: method,
        url: url,
        error: onerror,
        success: function (data, textStatus, jqXHR) { onsuccess(data, textStatus, jqXHR, context, callback); }
    };
    $.ajax(url, settings);
    console.log("doajax: called $.ajax");
    return false;
}

function onerror(jqXHR, textStatus, errorThrown) {
    console.log("doajax: error");
    hideOverlay();
    formSpinner.stop();
    var extra = jqXHR.hasOwnProperty("responseJSON") ? jqXHR.responseJSON.error : jqXHR.responseText;
    alert("Error (" + jqXHR.status + ") :: " + textStatus + " :: " + errorThrown + " :: " + extra);
}

function onsuccess(data, textStatus, jqXHR, context, callback) {
    console.log("doajax: success");
    hideOverlay();
    formSpinner.stop();
    if (data.status === 200 || data.status === 201) {
        hooks[callback](data, context);
    }
    else {
        alert("Error (" + jqXHR.status + ") :: " + textStatus + " :: " + data.error);
    }
}

一切正常,但现在,服务器没有收到请求,Chrome网络窗口显示GET 200 OK,无论是GET还是POSTurl: url请求。

在网络标签中,$.ajax settings的{​​{1}}参数没有请求,而是我看到当前页面的请求,生成200 OK响应。

不会抛出任何错误,也不会调用成功函数。

我一直在研究可能的缓存问题,但POST请求永远不会被缓存,所以我不确定发生了什么。

编辑:添加了console.log(),在执行了一个应该触发日志显示$.ajax()调用的UI功能后:

  

doajax:调用$ .ajax

我还打开了Log XMLHttpRequests,我看到确认请求确实生成但是对于当前页面url,而不是通过settings传入的参数

答案:这是jQuery版本的问题。我发现在我刚刚集成此代码的地方使用了旧版jQuery。当我将jQuery 1.11放在我的代码之上时,一切正常。

所以实际问题是,jQuery 1.5之前不支持$.ajax(url, settings);,只能使用$.ajax(settings);

我可以确认使用jQuery 1.5+或将我的代码更改为$.ajax(settings);都可以解决问题。

0 个答案:

没有答案