0

こんにちは私はページにリンクが含まれています、ユーザーがリンクをクリックするとデータベースに移動して2つの配列を取得したいのですが、これら2つの配列に警告するとこの例外が発生しました

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でこれらの2つの配列を受け取ることができますか?これは完全なコードコードです

4

3 に答える 3

3

JSON.parse単一のJSONリテラルのみを解析できます。

2つの配列を2つのプロパティを持つ1つのオブジェクトに結合する必要があります。

于 2012-05-13T21:50:14.687 に答える
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
});
于 2012-05-13T21:51:11.927 に答える
1

JSONに応答するときは、1つのJSONである必要がありますが、2つの別々の配列を送信しています。

これらの2つのJSONを1つにマージします。

アップデート:

このようにしてください:

public function getRelatedConceptsAndRelations($concpetName, $Ajax) {
    if ($Ajax) {
        $concepts = array('c1', 'c2');
        $relations = array('r1','r2');
        echo json_encode(array($concepts, $relations));
    }
    return;
}
于 2012-05-13T21:50:49.243 に答える