如何解析从$ .get()函数获得的数据

时间:2011-01-31 01:34:24

标签: php jquery ajax

我使用ajax从服务器获取数据:(EDITED)

$(document).ready(function()
{
  setInterval(function()
  {
     $.get('/forms/requestProcessor.php', function(data) 
     {
        $("#shout").append(data.question+'<br>');
        alert('Load was performed.');
     },'JSON');
  }, 5000); // 5 seconds
});

在php文件中,我发送如下数据:

while($row=mysql_fetch_array($result))
{
  $question=$row['Question'];
  $choice1=$row['Choice1']; 
  $choice2=$row['Choice2'];
  $choice3=$row['Choice3'];
  $choice4=$row['Choice4'];

  $return_data->question = $question;
  $return_data->choice1 = $choice1;
  $return_data->choice2 = $choice2;
  $return_data->choice3 = $choice3;
  $return_data->choice4 = $choice4;

  echo(json_encode($return_data));
}

打印“未定义”。但是,如果我将浏览器直接指向php文件,它会以json格式正确显示数据

6 个答案:

答案 0 :(得分:2)

是的,最简单的方法是返回json_encoded字符串。所以你的代码看起来像这样 PHP:

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . "GMT");

    header("Cache-Control: no-cache, must-revalidate");

    header("Pragma: no-cache");

    header("Content-type: text/x-json");

    echo json_encode($array);

    exit(0);

和JavaScript看起来像这样:

 $.get('/forms/requestProcessor.php', function(data) 
 {
  ....
 }, 'json');

答案 1 :(得分:1)

看起来好像你正在收到一个结果字符串,其中没有真正的结构。

如果你愿意,你可以在你的编码中使用json_encode()以json格式发回你想要发送回的任何数据,并将$.get()请求的设置更改为json,这样你就可以只需通过data.choice2等访问它们......

示例

$return_data->question = $question;
$return_data->choice1 = $choice1;
$return_data->choice2 = $choice2;
...
$return_data->choice5 = $choice5;

echo json_encode($return_data);

然后是$.get()

$(document).ready(function()
{
  setInterval(function()
  {
     $.get('/forms/requestProcessor.php', function(data) 
     {
        $("#shout").append(data+'<br>');
        alert('Load was performed.');
     },'json');                //<-- added, last argument to expect 'json'
  }, 5000); // 5 seconds
});

现在数据将以json格式返回,并将由jQuery解析,因为它希望它是json。

因此,您现在可以使用data.questiondata.choice1等语句访问成功函数中的数据...

答案 2 :(得分:1)

不确定。如果你把它放到<p></p>对中会更容易,但你对数据做的是将它放入DOM节点。 jQuery非常乐意让您再次获得这些DOM节点的 out 结果。

但如果你有PHP返回JSON,就像

那样,你可以让自己的生活更轻松
[ question, ans1, ans2, ans3, ans4]

甚至更好

{ "question" : "my question text",
  "answers"  : [a1,a2,a3,a4]
}

答案 3 :(得分:1)

如果将“/forms/requestProcessor.php”的返回值编码为JSON格式,则会更好。 然后使用jquery.parseJSON()

从客户端读取它

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

答案 4 :(得分:0)

在php中,您可以将响应存储在数组中并使用json_encode函数对其进行转换。在jQuery之前,您可以使用$ .parseJSON(data)

检索json

答案 5 :(得分:0)

你必须使用jQuery.parseJSON ...

示例:

"var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );"

click me to know briefly