Jquery 返回json数组的PHP在javascript中显示为Null
我有一个ajax调用,它将数据发布到php脚本并返回数据。如果我回显php脚本中的数据,我可以用javascript很好地提醒它。但如果我将其作为json返回,则警报将不显示任何内容 我的javascriptJquery 返回json数组的PHP在javascript中显示为Null,jquery,post,Jquery,Post,我有一个ajax调用,它将数据发布到php脚本并返回数据。如果我回显php脚本中的数据,我可以用javascript很好地提醒它。但如果我将其作为json返回,则警报将不显示任何内容 我的javascript $.ajax({ type: "POST", url: url, async: false, data: {1:'Home', 2:'About', 3:'C
$.ajax({
type: "POST",
url: url,
async: false,
data: {1:'Home', 2:'About', 3:'Contact'},
success: function(data){
alert(data);
//manipulate returned data here
));
}
});
我的php
function get_latest() {
$stack = array();
foreach($_POST as $key => $value) {
$tmpRec = db_fetch_object(db_query('SELECT * FROM node_revisions WHERE nid = "%s"', $key));
$arr = array($key => array('timestamp' => $tmpRec->timestamp, 'body' => $tmpRec->body));
array_push($stack, $arr);
}
echo '<pre>' . print_r($stack,1) . '</pre>'; //works and comes up in alert
echo json_encode($stack); //Shows nothing
}
函数get_latest(){
$stack=array();
foreach($\发布为$key=>$value){
$tmpRec=db_fetch_对象(db_查询('SELECT*FROM node_revisions,其中nid=“%s]”,$key));
$arr=array($key=>array('timestamp'=>$tmpRec->timestamp,'body'=>$tmpRec->body));
阵列推送($stack,$arr);
}
回显“”。打印($stack,1)。“”;//工作并发出警报
echo json_encode($stack);//不显示任何内容
}
还有别的办法吗?我需要服务器以我可以在javascript中操作的格式将数据发送回。这里的注释中要求的是使用PDO的参数化查询示例
$sql=new PDO("mysql:host=127.0.0.1;dbname=name","user","password");
让我们一行一行地看一下
$query="Select * from Northwind where Id=:ID;
$sql成为一个新的PDO对象(PDO可以支持多种类型的数据库(在本例中,我们使用的是MYSQL)
注意:我们提供的不是Northwind表中的实际Id,而是“:Id.”
$stmt->bindParam(':ID',$random_Id);
有趣的是,prepare语句将我们的查询字符串发送到sql server。此时,服务器知道我们将运行的sql命令,但还不知道变量的值
$stmt->execute();
$dr=$stmt->fetch();
bindParam然后发送$random_Id的值来替换“:Id.”
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| Id | int | NO | PRI | NULL | |
| Name | varchar(10) | NO | UNI | NULL | |
| Passwd | varchar(50) | NO | | NULL | |
| Salt | varchar(50) | NO | UNI | NULL | |
+--------+-------------+------+-----+---------+-------+
然后执行我们的查询,并将结果放入$dr中。您可以从$dr中获取数据,就像从哈希表中获取数据一样。因此,假设northwind表如下所示:
$userName=$dr['Name'];
$sql=null;
for($i=0;$i<=6;$i++)
{
$stmt->bindParam(':ID',$i);
$stmt->execute;
}
我们需要'Name'的值。我们可以键入如下内容:
$userName=$dr['Name'];
$sql=null;
for($i=0;$i<=6;$i++)
{
$stmt->bindParam(':ID',$i);
$stmt->execute;
}
此行将销毁PDO对象,将其从内存中释放并关闭数据库连接
这样做SQL有两个优点。第一个是速度。如果您需要运行上面的查询,我不知道6次,使用6个不同的ID,您可以在prepare语句之后执行以下操作:
for($i=0;$ibindParam(':ID',$i);
$stmt->execute;
}
服务器已经有了主查询,所以我们只发送更改的内容。如果我们这样做来插入许多记录,这将比将整个查询放入循环快得多
第二个好处是它使SQL注入变得不可能(这是我使用它的主要原因)。告诉我们
var_dump($stack);
Please应该可以工作。你确定JSON编码可以工作吗?最后一行试试:如果(!function_exists('JSON_encode')echo“没有可用的JSON函数!”;否则echo($JSON=JSON_encode($stack))?$json:json_last_error();
2件事;url的值是多少?其次,您的代码容易受到SQL注入的攻击。我会认真研究使用参数化查询来保存自己未来的头像没有json函数可用!另外,使用array_push()
向数组中添加一个值是毫无意义和低效的,您还通过向不必要的变量$arr
分配一个值来增加开销。请改用$stack[]=array(…);
。