嗨我有一个页面包含一个链接,当用户点击我想要去数据库的链接并检索两个数组时,但是当我提醒那两个数组时我得到了这个异常
Unexpected token [
这是我的js代码
function acNewConcpet(element){
var parent = element.parentNode;
parent.removeChild(element);
var concpetSelect = document.createElement('select');
var relationSelect = document.createElement('select');
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){
var data = JSON.parse(xmlhttp.responseText);
alert(data);
}
}
xmlhttp.open("GET","http://localhost/Mar7ba/Ontology/getRelatedConceptsAndRelations/"+"concept"+"/TRUE",true);
xmlhttp.send();
}
这是我的PHP代码
public function getRelatedConceptsAndRelations($concpetName, $Ajax) {
if ($Ajax) {
$concepts = array('c1', 'c2');
$relations = array('r1','r2');
echo json_encode($concepts);
echo json_encode($relations);
}
return;
}
为什么这个例外?我该如何解决?我怎样才能在我的js中收到这两个数组? 这是完整代码code
答案 0 :(得分:3)
JSON.parse
只能解析单个 JSON文字。
您应该将两个数组合并为一个具有两个属性的对象。
答案 1 :(得分:3)
您正在返回格式错误的JSON。根据我对你的代码的理解,它打印出这个JSON:
['c1','c2']['r1,r2']
你不能有这样的2个阵列。你必须打印它:
[['c1','c2'],['r1','r2']]
抱歉我生锈的PHP,但你必须有类似的东西:
$json = array(
array('c1','c2'),
array('r1','r2')
);
echo json_encode($json);
由于您使用的是jQuery,为什么不使用$.getJSON()
?
$.getJSON(url,function(returnData){
//returnData is the parsed JSON
});
答案 2 :(得分:1)
当你响应一个JSON时,它需要是一个JSON,但你发送两个单独的数组。
将这两个JSON合并为一个。
<强>更新强>
这样做:
public function getRelatedConceptsAndRelations($concpetName, $Ajax) {
if ($Ajax) {
$concepts = array('c1', 'c2');
$relations = array('r1','r2');
echo json_encode(array($concepts, $relations));
}
return;
}