没有指示jquery ajax调用完成

时间:2013-01-17 06:52:12

标签: javascript jquery

我有以下ajax调用

function update_ledger_amount(id) {
    $.ajax({
        type: "POST",
        url: "/ledgeritems/UpdateAmount",
        data: "Id=" + id + "&Amount=" + $('#ledger_edit_amount_input_' + id).val(),
        success: function (str) {
            var result = str.split('|');
            alert(str);
            if (result[0] == 'success') {
                set_display_message('Item updated', 'success');
                load_ledger_month($('#BankAccountId').val(), $('#StartDate').val());
            }
            else {
                alert('bad');
                set_display_message(result[1], 'error');
            }
        },
        error: function (request, status, error) {
            alert(error);
        }
    });
}

我遇到的问题是我没有收到有关成功或错误的警报。通过firebug观察流量我可以看到响应是一个简单的

success

我认为问题可能与响应的内容类型有关,它显示为text / javascript。我想也许我需要做一些不同的事情来处理这种内容类型。

4 个答案:

答案 0 :(得分:0)

在成功处理程序中放置一个try catch块。我想它在这一行失败了

ar result = str.split('|');

答案 1 :(得分:0)

使用dataType作为json并在控制器(php)中将响应作为json发送..你可以通过...... echo json_encode(array('success'=>'success'))

来做到这一点

<强> JQUERY

$.ajax({
    type: "POST",
    url: "/ledgeritems/UpdateAmount",
    data: "Id=" + id + "&Amount=" + $('#ledger_edit_amount_input_' + id).val(),
    dataType:'json',
    success: function (str) {
        alert(str.success);  //in mycase.. you can do your stuff here
        /*var result = str.split('|');
        alert(str);
        if (result[0] == 'success') {
            set_display_message('Item updated', 'success');
            load_ledger_month($('#BankAccountId').val(), $('#StartDate').val());
        }
        else {
            alert('bad');
            set_display_message(result[1], 'error');
        }*/
    },
    error: function (request, status, error) {
        alert(error);
    }
});

<强> PHP

.....
echo json_encode(array('success'=>'success'));

这会以json的形式发送成功,您可以在success ajax的{​​{1}}函数中获得该成功

答案 2 :(得分:0)

你正在做一个POST ajax而不是GET。 ajax的数据部分应采用以下形式:

data: { name: "John", location: "Boston" }

答案 3 :(得分:0)

删除行

type = "POST",

因为您希望根据您的请求将params附加到网址。

从jQuery 1.8成功开始,错误和完成被弃用,使用完成,失败和反正。 http://api.jquery.com/jQuery.ajax/#jqXHR

POST的语法如下:

data = {id:"something", Amount:"someval"};