我如何从AJAX / PHP获得答案?

时间:2011-08-09 22:00:01

标签: jquery ajax

假设我发送这个简单的ajax请求(jquery):

$.ajax({
   type: 'POST',
   url: '/ajax/requestForm.php',
   data: {'action':'request', 'language':'sk'},
   complete: function(data){
      alert(data);
   }
});

在我的requestForm.php中,我有:

<?php echo 'Hello answer!'; ?>

什么警报()在浏览器中显示我:

  

[object Object]

我希望它显示:

  

你好答案!

有什么想法吗?

7 个答案:

答案 0 :(得分:1)

complete:更改为success:,这样可以获得所需的结果。

Complete是在请求完成时调用的函数(在执行成功和错误回调之后)。该函数传递两个参数:jqXHR(在jQuery 1.4.x,XMLHTTPRequest中)对象和一个对请求状态进行分类的字符串(“成功”,“未修改”,“错误”,“超时”,“中止”或“parsererror”)。这就是你得到一个返回对象的原因。

答案 1 :(得分:0)

你想要

alert(data.responseText);

答案 2 :(得分:0)

响应将在数据对象的responseText或responseXML属性中提供。

答案 3 :(得分:0)

你应该尝试:

$.ajax({
   type: 'POST',
   url: '/ajax/requestForm.php',
   data: {'action':'request', 'language':'sk'},
   success: function(data){
      alert(data);
   }
});

成功而不是完整,完整是关闭功能,比如删除微调器等。@ Jones是正确的,你应该返回xml,JSON,或者输出html有时可以用于迷你应用程序,但正如我认为你只是测试jQuery AJAX,你需要的是使用success属性来返回数据。

答案 4 :(得分:0)

我相信你应该在php脚本中输出“结构化”数据,比如json。 例如:

$output = array('message'=>'Hello answer!', 'otherdata'=>'Value of other data');
echo json_encode($output);

在jQuery中你应该这样做:

$.ajax({
   type: 'POST',
   dataType: 'json', //The type of data you're expecting to receive from the server
   url: '/ajax/requestForm.php',
   data: {'action':'request', 'language':'sk'},
   success: function(response){
      alert(response.message);
   }
});

这应该产生预期的结果。

答案 5 :(得分:0)

$ .ajax()complete()第一个参数(data)是jqXHR个对象,而success()第一个参数(数据)也是请求的响应数据本身。

使用complete():
要从jqXHR访问回复数据,您需要阅读jqXHR.responseTextjqXHR.responseXML属性alert(jqXHR.responseText)

使用success():
简单的alert(data)可以解决问题。

答案 6 :(得分:-1)

您应该使用success代替complete,然后尝试

dataType: 'html',

html :以纯文本形式返回HTML;包含的脚本标记在插入DOM时会被评估。

dataType: 'text',

文字:纯文字字符串。

http://api.jquery.com/jQuery.ajax/