【发布时间】:2018-07-03 22:20:18
【问题描述】:
我在使用多维数组时遇到了一些问题。我的php代码如下:
$result = array();
$count = 0;
foreach($matches_lines as $lines){
$match_user = $lines["signup_username"];
$match_birth = $lines["signup_birth"];
$match_city = $lines["signup_city"];
$match_gender = $lines["signup_gender"];
$match_os = $lines["signup_os"];
$match_persontype = $lines["signup_persontype"];
if("some check on the variables"){
$result[$count] = array('username' => "$match_user", 'birth'=> "$match_birth", 'city' => "$match_city", 'gender' => "$match_gender", 'os' => "$match_os", 'persontype' => "$match_persontype");
$count = $count + 1;
}
}
}
echo json_encode($result);
}
而我的 ajax 请求看起来像这样:
$("#select_age").click(function(){
$.ajax({
method: "POST",
url: "get_matches.php",
dataType: "json",
data: {
min_search: $( "#slider-range" ).slider( "values", 0 ),
max_search: $( "#slider-range" ).slider( "values", 1 )
},
success: function(data){
var myvar = jQuery.parseJSON(data);
window.alert(myvar)
}
});
});
var_dump($result) 应该如下所示:
array(2) {
[0]=>
array(6) {
["username"]=>
string(6) "giulia"
["birth"]=>
string(10) "05/10/1990"
["city"]=>
string(6) "Torino"
["gender"]=>
string(1) "F"
["os"]=>
string(7) "Windows"
["persontype"]=>
string(4) "ENFP"
}
[1]=>
array(6) {
["username"]=>
string(7) "taiga27"
["birth"]=>
string(10) "07/27/1998"
["city"]=>
string(6) "Torino"
["gender"]=>
string(1) "F"
["os"]=>
string(7) "Windows"
["persontype"]=>
string(4) "ISTP"
}
}
当我到达 var myvar = jQuery.parseJSON(data);我收到错误“位置 2 的 JSON 中出现意外的令牌 a”
我做错了什么?如何在 foreach 中初始化正确的 JSON 多维数组?以及如何在ajax成功函数中检索一次数据?
【问题讨论】:
-
var_dump 没有生成 JSON 输出。改用 json_encode
-
此外,如果数据来自数据库,则可以在 SQL 中自动构建此数组。
-
尝试使用您的浏览器检查器/开发者工具来查看 ajax (xhr) 请求的内容。在 json 数据之前可能还有其他输出导致无法使用 parseJSON()
-
AbraCadaver 是的,我编辑了我的帖子,因为我忘记了我必须检查一些变量的条件,这就是为什么我没有使用从 SQL 到 JSON 的自动转换
-
使用 jsonlint.com 检查 JSON 中的错误。
标签: php jquery json ajax multidimensional-array