Php 向Jquery发送JSON失败
我的php/jquery脚本有问题。假设PHP脚本从MySQL数据库获取一个字段数组,然后将其解析为JSON并回显,这样我就可以在Jquery脚本中获取它 问题在于Jquery脚本没有正确地获取数据,或者没有正确地处理JSON,或者最后一种可能是我做错了什么(这可能是因为Jquery对我来说是一个新的工作领域) 我在互联网上找到了很多不同的Jquery脚本,但下面是我当前的代码: PHP:Php 向Jquery发送JSON失败,php,jquery,mysql,json,Php,Jquery,Mysql,Json,我的php/jquery脚本有问题。假设PHP脚本从MySQL数据库获取一个字段数组,然后将其解析为JSON并回显,这样我就可以在Jquery脚本中获取它 问题在于Jquery脚本没有正确地获取数据,或者没有正确地处理JSON,或者最后一种可能是我做错了什么(这可能是因为Jquery对我来说是一个新的工作领域) 我在互联网上找到了很多不同的Jquery脚本,但下面是我当前的代码: PHP: <?php include("../../config.php"); $roo
<?php
include("../../config.php");
$roomId = $_POST['roomId'];
$data = mysql_query("SELECT field FROM fields WHERE room = '$roomId'
AND value = 1 AND TYPE = ''") or die(mysql_error());
while ($users = mysql_fetch_array($data)) {
echo json_encode($users);
}
?>
function UpdateRoom() {
var data = 'roomId='+roomId;
$.ajax({
type: "POST",
url: "chatfunctions/getplacementfield.php",
dataType: 'json',
data: data,
success: function(data){
var arrayValues = $.parseJSON(data);
$.each(arrayValues, function() {
$('#f' + parseInt(arrayValues.field).append('<div id="user" />');
});
}
});
}
$(function(){
$.getJSON("userinfo.php",function(data)
{
$.each(data, function(i,data){
var jsondata ="<li>Name : "+data.fname+" "+data.lname+"</li>";
$(jsondata).appendTo("ol#userlist");
});
});
});
尝试设置
header('Content-type: application/json');
在回显json数据之前
您还应该删除这一行,var arrayValues=$.parseJSON(数据);并将数据传递给每个函数。console.log(数据)来检查它的用户数组。试试这个,我希望你能从这个例子中得到一个想法-
PHP:
<?php
$con = mysql_connect("localhost","root","");
$dbs = mysql_select_db("rs", $con);
$result = mysql_query("SELECT * FROM profile") or die(mysql_error());
$json = array();
while ($row = mysql_fetch_assoc($result)) {
$json[] = $row;
}
print json_encode($json);
exit;
?>
Jquery:
<?php
include("../../config.php");
$roomId = $_POST['roomId'];
$data = mysql_query("SELECT field FROM fields WHERE room = '$roomId'
AND value = 1 AND TYPE = ''") or die(mysql_error());
while ($users = mysql_fetch_array($data)) {
echo json_encode($users);
}
?>
function UpdateRoom() {
var data = 'roomId='+roomId;
$.ajax({
type: "POST",
url: "chatfunctions/getplacementfield.php",
dataType: 'json',
data: data,
success: function(data){
var arrayValues = $.parseJSON(data);
$.each(arrayValues, function() {
$('#f' + parseInt(arrayValues.field).append('<div id="user" />');
});
}
});
}
$(function(){
$.getJSON("userinfo.php",function(data)
{
$.each(data, function(i,data){
var jsondata ="<li>Name : "+data.fname+" "+data.lname+"</li>";
$(jsondata).appendTo("ol#userlist");
});
});
});
$(函数(){
$.getJSON(“userinfo.php”,函数(数据)
{
$。每个(数据,函数(i,数据){
var jsondata=“名称:”+data.fname+“+data.lname+” ”;
$(jsondata).appendTo(“ol#userlist”);
});
});
});
您不需要$.parseJSON()
-您已经设置了数据类型:“json”
,因此jQuery在调用success函数之前会自动解析响应。如果这不起作用,那么PHP发送它的方式可能有问题。我不是PHP爱好者,但我认为echo-json\u-encode($users)
是错误的,因为它回显单独的JSON片段,每行一个。在循环内部,您需要以某种方式将每一行添加到一个数组中,然后在循环结束后回显整个数组的JSON编码there@nnnnnn->好的,已经完成了,数据现在位于一个数组中,并已编码为json,并发送回jquery,但仍然没有结果。。嗯……你检查过html的源代码了吗,你所做的一切似乎都是附加空div(所有div都具有相同的ID…)。这是糟糕的JavaScript/PHP,因为它可能受到SQL注入攻击。未经验证,不应在SQL语句中使用从客户端传入的任何内容。另外,您传递的不是JSON,正确的JSON应该是`JSON.stringify({id:roomId});,另外,您不需要在这里使用POST请求,将其更改为GET,然后您将得到一个类似于chatfunctions/getplacementfield.php?roomId=1234的请求