从php获取JSON编码的变量
我有以下php代码:从php获取JSON编码的变量,php,javascript,jquery,ajax,json,Php,Javascript,Jquery,Ajax,Json,我有以下php代码: $query = mysql_query("SELECT * FROM table WHERE id=$id"); while($item = mysql_fetch_assoc($query)){ $dataArray['var1'] = $item['var1']; $dataArray['var2'] = $item['var2']; $dataArray['var3'] = $item['var3']; array_push($ret
$query = mysql_query("SELECT * FROM table WHERE id=$id");
while($item = mysql_fetch_assoc($query)){
$dataArray['var1'] = $item['var1'];
$dataArray['var2'] = $item['var2'];
$dataArray['var3'] = $item['var3'];
array_push($return_arr,$dataArray);
}
echo json_encode($return_arr);
它在我的ajax.php
文件中
然后我使用jquery通过ajax请求将id发送到那里:
$.ajax({
type: "POST",
url: 'ajax.php',
data: 'id='+id,
success: function(data) {
alert(data);
}
});
它提醒我:[{“var1”:“somevarhere”,“var2”:“somevarhere2”,“var3”:“somevarhere3”}]
有人能告诉我如何访问例如var3
以获取somevarhere3
谢谢您应该可以这样访问它:
data[0].var3
其中0是您要访问的数组中项目的索引。应该能够像这样访问它:
data[0].var3
其中0是要访问的数组中的项的索引。根据的文档,它作为第一个参数接收的数据将根据传递给
jQuery.Ajax
的选项的值进行解释
如果为该参数传递'json'
,会怎么样?
像这样:
$.ajax({
type: "POST",
url: 'ajax.php',
data: 'id='+id,
dataType: 'json',
success: function(data) {
alert(data);
}
});
header('Content-type: application/json');
这样做,jQuery.ajax
应该将服务器返回的数据解释为JSON
否则,文档说明,如果未指定数据类型(引用):
jQuery将尝试根据
响应的MIME类型
因此,另一种解决方案是从PHP代码中返回一些JSON内容类型(请参阅),如下所示:
$.ajax({
type: "POST",
url: 'ajax.php',
data: 'id='+id,
dataType: 'json',
success: function(data) {
alert(data);
}
});
header('Content-type: application/json');
在做回音之前
同样,jQuery.ajax
应该将从服务器返回的数据解释为JSON。根据的文档,它作为第一个参数接收的数据根据传递给jQuery.ajax
的数据类型的值进行解释
如果为该参数传递'json'
,会怎么样?
像这样:
$.ajax({
type: "POST",
url: 'ajax.php',
data: 'id='+id,
dataType: 'json',
success: function(data) {
alert(data);
}
});
header('Content-type: application/json');
这样做,jQuery.ajax
应该将服务器返回的数据解释为JSON
否则,文档说明,如果未指定数据类型(引用):
jQuery将尝试根据
响应的MIME类型
因此,另一种解决方案是从PHP代码中返回一些JSON内容类型(请参阅),如下所示:
$.ajax({
type: "POST",
url: 'ajax.php',
data: 'id='+id,
dataType: 'json',
success: function(data) {
alert(data);
}
});
header('Content-type: application/json');
在做回音之前
同样,jQuery.ajax
应该将服务器返回的数据解释为JSON。好的,我找到了解决方案。多亏了Pascal MARTIN
我有了解析结果的想法,所以我使用了以下方法:
data = data.substring(1,data.length-1);
data = $.parseJSON(data);
alert(data.var3);
第一行删除[],
第二行将JSON解析为对象,
第三行访问属性好的,我找到了解决方案。多亏了Pascal MARTIN
我有了解析结果的想法,所以我使用了以下方法:
data = data.substring(1,data.length-1);
data = $.parseJSON(data);
alert(data.var3);
第一行删除[],
第二行将JSON解析为对象,
第三行访问属性,那么你的问题是如何将json编码的字符串转换为对象?那么你的问题是如何将json编码的字符串转换为对象?我添加了数据类型:'json',
-这看起来很好,现在它说数据
是对象,但当我发出警报(data.toSource())
它仍然返回[{“var1”:“somevarhere”、“var2”:“somevarhere2”、“var3”:“somevarhere3”}]
,因此它不起作用。它认为这是因为这些括号([])好吧,现在您的数据被解释为JSON,您可以像任何其他包含一个对象的Javascript数组一样访问它;例如:data[0].var3
我添加了dataType:'json',
-这看起来几乎很棒,现在它说data
是对象,但是当我alert(data.toSource())
时,它仍然返回[{“var1”:“somevarhere”,“var2”:“somevarhere2”,“var3”:“somevarhere3”}]
,因此它不起作用。它认为这是因为这些括号([])好吧,现在您的数据被解释为JSON,您可以像任何其他包含一个对象的Javascript数组一样访问它;例如:data[0].var3
如果您的SQL查询总是返回一个且仅返回一个结果,那么最好从PHP返回一个对象,而不是一个包含一个对象的数组——这就是那些[]
存在的原因:您的PHP代码返回一个JSON编码的数组。如果您的SQL查询总是返回一个且仅返回一个结果,您最好从PHP返回一个对象,而不是一个包含一个对象的数组——这就是那些[]
存在的原因:您的PHP代码返回一个JSON编码的数组。