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属性传递给成功处理程序。