无法从jquery / ajax获得响应

时间:2011-03-25 20:13:54

标签: jquery ajax

这令我头疼,再次。我要么根本不理解这个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。

提前致谢!

4 个答案:

答案 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;    警报(响应);  }