我在PHP AJAX中做了类似的事情:
$rows = array();
while($r = mysql_fetch_assoc($sth))
{
$rows[] = $r;
}
print json_encode($rows);
我的调用JavaScript代码是这样的:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript" >
$(function()
{
$("input[type=submit]").click(function()
//$("input[type=button]").click(function()
{
var name = $("#problem_name").val();
var problem_blurb = $("#problem_blurb").val();
var dataString = 'problem_name='+ name + '&problem_blurb=' + problem_blurb;
if(name=='' || problem_blurb == '')
{
$('.success').fadeOut(200).hide();
$('.error').fadeOut(200).show();
}
else
{
$.ajax({
type: "POST",
url: "/problems/add_problem.php",
data: dataString,
success: function()
{
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
}
return false;
});
});
</script>
如何将编码后的JSON传回jQuery调用,对其进行解码并输出该数据?如果我自己循环访问数据并通过将字符串合并在一起制作JSON代码会更好吗?
谢谢!
答案 0 :(得分:2)
设置dataType:'json'
,这样你就不需要解析json
$.ajax({
type: "POST",
dataType:'json', <----
url: "/problems/add_problem.php", <---- here you call the php file
data: dataString,
success: function(data) <--- here the data sent by php is receieved
{
// data will contain the decoded json sent by server
// you can do data.property that depends upon how the json is structured
$('.success').fadeIn(200).show();
$('.error').fadeOut(200).hide();
}
});
add_problem.php
$name=$_POST['problem_name']; // get the name here
$desc=$_POST['problem_blurb']; //get the description here
$rows = array();
//fetch data from DB
while($r = mysql_fetch_assoc($sth))
{
$rows[] = $r;
}
print json_encode($rows); //json encode it and send back to ajax success handler
//or
//echo json_encode($rows);
答案 1 :(得分:2)
jQuery.getJSON和$ .ajax有一些参数,根据需要传递。 “data:JSON”期望输出为json格式。当您需要输出时,您需要在成功处理程序中传递变量。即
$.ajax({
type: "POST",
url: "/problems/add_problem.php",
data: JSON, `datastring is replaced by JSON datatype`
success: function(data) `data is json object that will contain the jsonencoded output returned from add_problem.php`
{
for(var i in data)
{
console.log(data[i]) `returns the data at i'th index.`
}
}
});
答案 2 :(得分:1)
只需在回调函数中执行此操作
$.ajax({
type: "POST",
url: "/problems/add_problem.php",
data: dataString,
success: function( data )
{
foreach( var i in data )
// do something
}
});
最好在服务器端对json进行编码,因为在客户端使用json更容易。