0

我有以下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);
        }
    });
}

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

success

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

4

4 回答 4

0

在您的成功处理程序中放置一个 try catch 块。我想它在这条线上失败了

ar 结果 = str.split('|');

于 2013-01-17T06:59:48.030 回答
0

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

查询

$.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

于 2013-01-17T07:01:47.537 回答
0

您正在执行 POST ajax 而不是 GET。ajax 的数据部分应采用以下形式:

data: { name: "John", location: "Boston" }
于 2013-01-17T07:06:33.557 回答
0

删除线

type = "POST",

因为您想将参数附加到您的请求的 url。

从 jQuery 1.8 开始,不推荐使用 success、error 和 complete,而是使用 done、fail 和 allways。 http://api.jquery.com/jQuery.ajax/#jqXHR

POST 的语法如下:

data = {id:"something", Amount:"someval"};
于 2013-01-17T07:08:28.247 回答