如何在jQuery/JavaScript中读取Ajax调用成功后的响应?
如何在jQuery/JavaScript中读取Ajax调用成功后的响应?
先看一下你贴的代码,这里有两个小问题需要修正,之后就能顺利读取响应数据了:
首先,修正你的Ajax请求结构
你把dataType参数放错位置了——它应该是$.post的第四个参数,而不是放在请求的data对象里。另外,如果指定了dataType: 'json',jQuery会自动帮你把后端返回的JSON字符串解析成JavaScript对象,不需要再手动调用JSON.parse(data)。
修正后的代码示例
$( document ).ready(function() { $('tr').on('blur', 'td[contenteditable]', function() { var that = this; // $.post的参数顺序:url, 请求数据, 成功回调, 返回数据类型 $.post( "ajax/modQtyModels", { modelId: $(this).closest('tr').children('td.idmodel').text(), qty: $(this).closest('tr').children('td.editQty').text(), ajax: true }, function(data) { // 这里的data已经是解析好的JSON对象了 if (data.success === true) { // 建议后端返回布尔值true,而不是字符串"true" // 这里写你的成功逻辑,比如给行加个成功样式 $(that).closest('tr').addClass('updated-success'); console.log("更新成功,返回数据:", data); } else { // 处理失败情况,比如提示错误信息 console.log("更新失败:", data.message); alert(data.message || "操作失败"); } }, 'json' // 告诉jQuery返回的是JSON格式 ); }); });
更清晰的写法:用$.ajax配置对象
如果觉得$.post的参数顺序容易搞混,推荐用$.ajax的完整配置写法,可读性更强,也更容易维护:
$( document ).ready(function() { $('tr').on('blur', 'td[contenteditable]', function() { var that = this; $.ajax({ url: "ajax/modQtyModels", type: "POST", data: { modelId: $(this).closest('tr').children('td.idmodel').text(), qty: $(this).closest('tr').children('td.editQty').text(), ajax: true }, dataType: "json", // 明确指定返回类型为JSON success: function(data) { // 直接访问响应对象的属性 if (data.success) { $(that).closest('tr').find('.status').text("已更新"); } else { alert("更新失败:" + data.error); } }, // 别忘了处理请求失败的情况(比如网络错误、后端报错) error: function(xhr, status, err) { console.error("请求出错:", err); alert("请求失败,请稍后重试"); } }); }); });
关键要点总结
- 不要手动解析JSON:只要指定了
dataType: 'json',jQuery会自动完成解析,直接用data.属性名访问即可。 - 参数位置要正确:
$.post的参数顺序是url, data, successCallback, dataType,别把配置项混在请求数据里。 - 处理失败场景:除了success回调,记得加error回调处理网络错误或者后端返回的非200状态码,提升用户体验。
内容的提问来源于stack exchange,提问作者ffuentes
相关产品推荐
相关产品推荐

