我有以下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。我想也许我需要做一些不同的事情来处理这种内容类型。
答案 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"};