jQuery ajax responseText’undefined’

我有一些jQuery将两个变量发布到php脚本中。 PHP非常简单,只需根据给出的内容返回一个字符串,即“更新成功”,我想在页面上以某种方式使用它。

我第一次点击时收到一条提示“未定义”,任何进一步的点击,一切正常。 很确定我离我不远,但我无法解决这个问题!

我已经使用了firebug并且数据被发布并且在所有尝试中都收到了正确的响应。

$(document).ready(function(){ $('#updatehol').click(function() { additions = $('#additions').attr('value'); deductions = $('#deductions').attr('value'); datastring = 'additions='+ additions +'&deductions='+ deductions; $.ajax({ type: "POST", data: datastring, url: "doadjust.php", complete: function(data) { alert(data.responseText); } }); }); }); 

对它进行排序。 Ajax函数中需要async: false选项。

 $.ajax({ type: "POST", data: datastring, url: "doadjust.php", dataType: "html", async: false, success: function(data) { alert(data); } }); 

只有alert(data)你会得到什么?

顺便说一下,它的成功还没有完成:

  $.ajax({ type: "POST", data: datastring, url: "doadjust.php", success: function(data) { alert(data); } }); }); 

这对我有用。

 var min = $.ajax( { type: 'POST', url: 'LineChart.asmx/LineChrt', data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", async: false, success: function(data) { // alert("SUCESS"); }, error: function(xhr, status) { alert("hatada:" + xhr.responseXML); }, onComplete: function(data) { } 

你应该添加json类型,例如:

 $('#test').on('click', '.testclass', function(event){ $.post($(this).attr('href'), function(data) { alert(data.text); }, 'json'); }); 

这是一个老问题,但我遇到了同样的问题,并在jQuery文档中找到了答案。

responeText和responseXml仅在使用dataType:text或xml时进行了解释。 如果您使用任何其他数据类型,它将作为成功回调中的第一个参数传递。

来自jQuery文档:

数据类型

$ .ajax()函数依赖于服务器来提供有关检索数据的信息。 如果服务器将返回数据报告为XML,则可以使用普通XML方法或jQuery选择器遍历结果。 如果检测到其他类型,例如上例中的HTML,则数据将被视为文本。

使用dataType选项可以实现不同的数据处理。 除了普通的xml,dataType可以是html,json,jsonp,script或text。

text和xml类型返回数据而不进行处理。 数据只是分别通过jqXHR对象的responseText或responseXML属性传递给成功处理程序。