我使用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格式正确显示数据
答案 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.question
,data.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()
从客户端读取它答案 4 :(得分:0)
在php中,您可以将响应存储在数组中并使用json_encode函数对其进行转换。在jQuery之前,您可以使用$ .parseJSON(data)
检索json答案 5 :(得分:0)
你必须使用jQuery.parseJSON
...
示例:
"var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );"