Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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
Javascript 无法使用来自ajax响应文本的Json数据_Javascript_Php_Json_Ajax - Fatal编程技术网

Javascript 无法使用来自ajax响应文本的Json数据

Javascript 无法使用来自ajax响应文本的Json数据,javascript,php,json,ajax,Javascript,Php,Json,Ajax,我正在使用javascript使用ajax从数据库中获取数据。答复如下: {"task":"r","category":"s","duration":"0"}{"task":"read","category":"s","duration":"10"}{"task":"read","category":"o","duration":"10"} 我在从MySql数据库获取数据的php脚本上使用了json\u encode($data)。如何将响应文本的任务、类别和持续时间存储在单独的变量中。我无法

我正在使用javascript使用ajax从数据库中获取数据。答复如下:

{"task":"r","category":"s","duration":"0"}{"task":"read","category":"s","duration":"10"}{"task":"read","category":"o","duration":"10"}
我在从MySql数据库获取数据的php脚本上使用了
json\u encode($data)
。如何将响应文本的任务、类别和持续时间存储在单独的变量中。我无法使用获得的响应。代码如下:

 if (mysqli_query($conn,$query)){
    $result = mysqli_query($conn,$query);
    $tasks = mysqli_fetch_all($result,MYSQLI_ASSOC);
    foreach($tasks as $task){
        echo json_encode($task);
    }
    mysqli_free_result($result);
}
get(url){
设xhr=newXMLHttpRequest();
xhr.open('GET',url,true)
xhr.onload=函数(){
if(this.status==200){
让data=this.responseText;
控制台日志(数据);
}
}
xhr.send();

}
尝试使用数据类型:“json”声明接收到的数据类型。

像这样:

$.ajax({
类型:“POST”,
url:“php/page.php”,
数据类型:“json”,
成功:功能(数据)
{
控制台日志(数据);
},
错误:函数(数据){
console.log(“错误”+数据)}

});如问题中所述,您的回答不是正确的JSON格式。您的答复格式如下:

{"task":"r","category":"s","duration":"0"}{"task":"read","category":"s","duration":"10"}{"task":"read","category":"o","duration":"10"}
而有效的JSON响应应为

[{"task":"r","category":"s","duration":"0"},{"task":"read","category":"s","duration":"10"},{"task":"read","category":"o","duration":"10"}]
一旦格式正确,通过JSON_decode函数解码JSON,并在循环中使用响应

有关正确解码,请参见以下示例:

$str = '[{"task":"r","category":"s","duration":"0"},{"task":"read","category":"s","duration":"10"},{"task":"read","category":"o","duration":"10"}]';

$response = json_decode($str, true);

foreach ($response as $res) {
   echo $res['task'] . ' ==== ' . $res['category'] . ' ===== ' . $res['duration'];
}

希望这能有所帮助。

我猜你是在循环调用
echo
。对于整个JSON请求,只能有一个
echo
。将所有行放在主数组中并回显。如果您需要更多帮助,还可以提供一个示例。发布的代码包含多个JSON。它应该看起来像{[content_of_first_bracked,content_of_second_bracked,…]}或者您必须添加一个devider文本/符号,并且必须在javascript内部拆分,然后对每个部分进行jsondecode是的,我在循环中使用了echo。我应该使用什么来在php脚本中获得正确的响应?应该将所有结果放入一个数组中,然后在循环完成后对该数组进行编码。不需要
$c
变量。只需使用
$array[]=
推到阵列上即可。