6

我是 jquery ajax 的初学者。当我使用 时,我的下面的 ajax 代码运行良好async: false,但由于 Firefox 中的问题,我在引用此链接后将其删除(我遇到了同样的问题)。现在它不工作了。甚至没有显示任何错误。

这是我的代码:

try {
    _ajaxCall = $.ajax({
        url: URL,
        type: "POST",
        data: "drqlFragment=" + text,
        //async : false,
        cache: false,
        headers: {
            accept: "application/json",
            contentType: "application/x-www-form-urlencoded"
        },
        contentType: "application/x-www-form-urlencoded",
        //processData : true,
        success: function (data, textStatus, jqXHR) {
            var resData = data.suggestions;
            for (var i = 0; i < resData.length; i++) {
                sugData.push(resData[i].keyword);
            }
        },
        error: function (response) {
            //Error here
            alert('hello');
        }
    });
} catch (e) {
    alert(e);
}

上面的代码既不执行success也不error。我什至试图通过保持try catch阻塞来捕捉错误,但没有用。

4

1 回答 1

5

问题是我在成功回调函数之外进行操作。当我使用它时它工作正常async: false。这意味着 ajax 调用将是同步的。当我删除async: false时,我在成功回调函数之外所做的操作不起作用。问题是由于 ajax 调用的异步行为。当异步调用 ajax 调用时,它不会按照代码原则,即一步一步从上到下流动,但它可以随时发生。因此,我无法获得所需的输出。

当我在成功回调中替换代码操作时,我的代码工作正常。感谢@mccannf 在上述评论中指出了问题。:)。

于 2013-05-13T09:00:06.827 回答