2011-05-23 66 views
0

我正在使用jQuery的ajax方法将一些数据发布到服务器并取回响应。虽然服务器端php代码正在返回一个json编码的字符串/数组,但响应会返回为空。PHP函数不返回任何数据给JQuery ajax方法

有人能指出我犯的错误吗?下面是如何使用我正在触碰postData.php页面的jquery ajax方法。

 $.ajax({ 
      url:'postData.php', 
      type:'POST', 
      data:data, 
      dataType: "json", 
      success: function(response){ 
       console.log(response); 
      } 
     }); 

postData.php中的内容非常直接,因为我仍在开发它。

$data = array(); 
//inside postData.php 
    $data['test']=1; 
    return json_encode($data); 

它应该返回一个json字符串,但它返回null。我也尝试在$ data数组声明后面回显一个字符串,它在firebug中回显它,但是响应是当我在成功回调中执行console.log时,它会返回为空。

回答

2

这是所有在postData.php?你需要把它写出到缓冲区(echo json_encode($ data);)。

+0

谢谢!!我已经使用jquery和ajax了很多,并且急于快速完成任务,我犯了这个有趣的错误! – macha 2011-05-23 01:00:29

3

为了得到结果回到你的Ajax功能,必须呼应它,而不是返回,如:

$data = array(); 
$data['test']=1; 
echo json_encode($data); 
+0

谢谢!我已经使用jquery和ajax了很多,并且急于快速完成任务,我犯了这个有趣的错误! – macha 2011-05-23 01:00:05

0

像morgar指出了这一点,你应该呼应的数据备份,而不是使用的回报。

$data = array(); 
$data['test']=1; 
echo json_encode($data); //echo instead of return 

同时,在你的ajax成功函数中,你应该像数组一样访问响应。

**Incorrect** 
console.log(response); //--> would return an error 

**Should Be** 
console.log(response[0]); //--> read the returned first array element 
+0

为什么会是一个错误?他只是console.log()'数组。 – 2011-05-23 02:15:56

+0

@John Green - PageSpike:嗯,我会认为这会导致错误,因为如果他有2个元素在数组中,要获得它的值将是响应[0]和响应[1]?我错了吗? – maomaopop 2011-05-26 02:43:17

+0

通常称为稀疏数组。这样做是合法的。 – 2011-05-26 05:23:54