Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php获取JSON编码的变量_Php_Javascript_Jquery_Ajax_Json - Fatal编程技术网

从php获取JSON编码的变量

从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

我有以下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($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编码的数组。