Javascript 无法使用来自ajax响应文本的Json数据
我正在使用javascript使用ajax从数据库中获取数据。答复如下: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)。如何将响应文本的任务、类别和持续时间存储在单独的变量中。我无法
{"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[]=
推到阵列上即可。