永远不会达到JQuery Ajax Success

时间:2012-07-25 21:52:27

标签: jquery

我有一个像这样的AJAX语句:

$.ajax({
            type: "POST",
            dataType: 'json',
            url: "DBDeleteList.php",
            data: {listID: listID},
            success: function(html){
                /* Succesfully Updated DB */
                alert( 'Saved!' );
                $(this).parents('li').remove();
                $('#sortableLoader').load('index.php #sortableMenu');
            }
});

它工作正常并激活PHP文件和所有内容,数据库修改正常工作。

唯一的问题是,即使成功,“成功:”部分也不会触发。

感谢您的任何提示。

4 个答案:

答案 0 :(得分:4)

您有一个您没有看到的返回错误。你正在发布到php,但无论你在帖子后返回什么,你的ajax调用都不喜欢。在调试成功函数后包含类似的内容:

error: function (jqXHR, exception) {
    if (jqXHR.status === 0) {
        alert('Not connect.\n Verify Network.');
    } else if (jqXHR.status == 404) {
        alert('Requested page not found. [404]');
    } else if (jqXHR.status == 500) {
        alert('Internal Server Error [500].');
    } else if (exception === 'parsererror') {
        alert('Requested JSON parse failed.');
    } else if (exception === 'timeout') {
        alert('Time out error.');
    } else if (exception === 'abort') {
        alert('Ajax request aborted.');
    } else {
        alert('Uncaught Error.\n' + jqXHR.responseText);
    }
}

我也会用firebug帮助看看发生了什么

答案 1 :(得分:0)

仍然不明白ajax函数调用中引用的是什么$(this),这是我理解它所指的是什么,但我怀疑它有没有父母?

当您期望json数据时,为什么在成功处理程序中使用变量html作为返回数据。

你确定这是一个错误的json导致解析错误的问题吗?

尝试省略数据类型并查看它返回的内容,并添加错误处理程序:

$.ajax({
    type: "POST",
    url: "DBDeleteList.php",
    data: { listID: listID },
}).done(function(html) {
     console.log(html);
}).fail(function(a,b,c) {
     console.log('error'+'-=-'+a+'-=-'+b+'-=-'+c);
});

答案 2 :(得分:0)

在ajax调用之前创建指向相关元素的指针,否则成功中的“$(this)”指的是xhr响应。确保响应是正确的内容类型(application / json)。

var $el = $(this);
$.ajax({
        type: "POST",
        dataType: 'json',
        url: "DBDeleteList.php",
        data: {listID: listID},
        dataType:"json",
        contentType : 'application/json',
        processData:false,
        success: function(html){
            /* Succesfully Updated DB */
            alert( 'Saved!' );
            $el.parents('li').remove();
            $('#sortableLoader').load('index.php #sortableMenu');
        }
});

同时验证响应的json是否有效。如果不满足其中任何一个,在大多数情况下它将无声地失败。

答案 3 :(得分:0)

在我的情况下,问题是拼写错误。我曾写过successsucess