这令我头疼,再次。我要么根本不理解这个ajax响应的东西,要么它的编码很差。
让我们建立一个极其简单的示例来使用:
register.php:
<?php
echo 'I want some response !!';
?>
ajax电话:
$.ajax({
url: '/register.php',
type: 'POST',
data: $('#form-registracia').serializeArray(),
success: function(e){
var response = e.responseText;
alert(response);
}
});
警告说未定义。为什么?我试过几个小时搞乱它,我读了jquery网站,没有任何帮助。我确定PHP文件被执行并且echo被发送回ajax。
提前致谢!
答案 0 :(得分:0)
“成功”的论点是答案文本本身;你问一个String的responseText成员,这确实是未定义的。直接使用参数。
成功函数有三个参数形式,其中最后一个参数是您正在寻找的XHR对象。
答案 1 :(得分:0)
尝试提醒(e)。您没有发送对象,因此e没有属性responseText(它只是纯文本)。如果您希望在浏览器访问时看到请求,请使用fiddler或firebug查看请求和响应标头。
答案 2 :(得分:0)
您需要更好地阅读jQuery api:
success(data, textStatus, jqXHR)Function, Array
请求成功时要调用的函数。该函数传递三个参数:从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;和jqXHR(在jQuery 1.4.x,XMLHttpRequest)对象。从jQuery 1.5开始,成功设置可以接受一系列函数。每个函数将依次调用。这是一个Ajax事件。
成功回调中的第一个参数是您的数据。您应该输入alert(e)
。
答案 3 :(得分:0)
您未定义,因为从服务器返回的响应包含在e中,而不是e.responseText中。 responseText是XHR对象的一个属性,但是jQuery为你封装了它,并提供了responseText作为success方法中的参数。
简而言之,请将其更改为:
成功:功能(e){ var response = e; 警报(响应); }