2012-04-20 5 views
1

JavaScriptを使用して、リンクをクリックするかバーをスライドするときにデータベースの内容によって変更されるリストがあります。私は現在、xmlhttpリクエストを使用して、リストを生成するPHPページを取得します。 私は、この形態での作業静的リストを持っている:phpまたはxmlhttp.responseTextからjavascriptにリストを渡す

var mark_list = [ 
{ "EntID" : 3, "x" : 100, "y" : 400}, 
]; 

Iは、PHPページを生成させることを試みた{ "EntID":400 3、 "X":100、 "Y" を}とmark_list等しく設定responseTextにはそれが単なる文字列だと私は信じています。私はこの新しいリストをvariablieに入れる方法を見つけるのに苦労しています。

誰にも提案や解決策はありますか?あなたの助けに感謝します。 https://github.com/douglascrockford/JSON-js/blob/master/json2.js

それが利用可能な場合はネイティブブラウザJSONオブジェクトに延期し、そうでない場合、それが追加されますされます:

Kallum

+1

短い答えは「JSONです。 " ['json_encode'](http://php.net/json_encode)と[' JSON.parse'](https://developer.mozilla)を見てください。org/En/Using_native_JSON#Parsing_JSON.C2.A0strings)、[json2.js](https://github.com/douglascrockford/JSON-js/blob/master/json2.js)または['jQuery.parseJSON'] (http://api.jquery.com/jQuery.parseJSON/)を参照してください。 –

答えて

1

は、ブラウザがここからJSONスクリプトを含めることにより、JSONオブジェクトを持っていることを確認してくださいこの機能は現在サポートされていないブラウザでも利用可能です。あなたはPHPスクリプトからの出力を受け取った後

次に、あなたのコードでは、これを実行します。

var stuff = JSON.parse(responseText); 
var mark_list = [stuff]; 
:PHPスクリプトからの出力に基づいて

var mark_list = JSON.parse(responseText); 

、あなたがこれを行う必要があるかもしれません

これは、PHPが実際のjavascriptオブジェクトに返すJSON文字列を変換します。あなたのPHPコードで

あなたはこのような何かを行うことができます。

$output = array(
    array(
     'EntId' => 3, 
     'x' => 100, 
     'y' => 400, 
    ), 
); 

echo json_encode($output); 

は、次に、あなたのJavaScriptで var mark_list = JSON.parse(responseText);オプションを使用することができます。

+0

私はjson2.jsを組み込み、提案したコードの変更を行いました。 私は今、エラーを取得しています: 'キャッチされないでSyntaxError:予期しないトークン、'ライン上 : 'VARのresponse1 = JSON.parse(xmlhttp.responseTextを);' 応答テキストは次のとおりです。 '{ "EntID": 2、 "x":0、 "y":0}、{"EntID":3、 "x":0、 "y":100}、{"EntID":5、 "x":0、 "y ":200}、 ' これ以上のサポートがあれば幸いです。 –

+0

ああ、間違いなく最後のものだけでなく、間にあるすべてのコンマです。どんな解決策ですか? –

+0

OK、javascriptの行全体をPHPで生成しました: 'var mark_list = [];'私の問題を解決するために 'eval(xmlhttp.responseText)'を使いました。すべての助けに感謝します。 –

1

responseText実際には文字列で表されるテキストになりますので、今すぐ出力している方法では、それだけですべてのトリックを行うわけではありません。あなたのJavaScriptで

  • サーバーがあなたを与えている出力を解析、:あなたがこれを行うことができる2つの方法が基本的にあります。これはあなたがそれをやるように感じるどんな方法でも純粋な文字列で行うことができます。たとえば、javascriptを使用して、中括弧で指定した形式とコロンに基づく構文を解析できます。あるいは、XMLのような別のフォーマットを使って作業を少し減らすこともできますが、javascriptで出力を解釈したままにしておきます。

  • オブジェクトとリストを記述する形式に出力できます。 JSONはこのような形式の大きな例です。 JSONで出力すると、上で使用したフォーマットに似たものが得られます(JSONはJavascript Object Notationの略で、javascriptの構文の一部に基づいています)。これを使用できるようにするために必要なことは、取得したいデータにアクセスします。あなたは、ほとんどのブラウザ上で、このためJSON.parse()を使用することができますが、より広範なサポートとの代替はjQueryのjQuery.parseJSON()(そのため、あなたはまた、その場合には提供しなければならないのjQueryを使用します)

関連する問題