0

この1つの小さな問題を除いて、(ばかげた)質問を投稿せずに最初のAJAX-JSONプロジェクトを作成しました:

function processEvent(data)  {  
var evt = $(data).text();
   } 

alert(evt); と書くと 次のように表示されます。

{meat:'beef',vegetable:'carrots',potato:'mashed'}

次のコードを使用して、変数「evt」から単語「beef」を抽出できます。

  evt.substr(7,4)

しかし、私が書くと:

  evt.meat

エラーが表示されます: 未定義。文字列操作に頼らずに、変数「肉」の値を直接取得するにはどうすればよいですか?

4

4 に答える 4

1

データが JSONの場合は、evtそれを解析して肉属性を取得できます。現在はそうではありません。これ{meat:'beef',vegetable:'carrots',potato:'mashed'}は JSON と同じです{"meat":"beef","vegetable":"carrots","potato":"mashed"}。一重引用符の代わりに二重引用符が使用されており、プロパティも引用されていることに注意してください。

function processEvent(data)  {  
var evt = $(data).text();// === {"meat":"beef","vegetable":"carrots","potato":"mashed"}
    evtObj = $.parseJSON(evt);
    alert(evtObj.meat); //shows beef
} 
于 2012-12-25T00:12:15.380 に答える
1

これは、この時点で具体的evtに文字列を作成したためです。何dataを表すか (JSON 文字列データ、JSON から解析されたオブジェクト、または DOM ノードのいずれか - コード例のコンテキストがなければどちらかわかりません) に応じて、オブジェクト表現を取得するために何かを行う必要がある場合があります。 . 少なくとも、これを実行して文字列を JSON に解析できます。

var evt = JSON.parse($(data).text());

ただし、 を呼び出して文字列にするオブジェクト表現が既にtext()ある可能性があるため、ここで不必要なシリアライゼーション/デシリアライゼーションが行われている可能性があります。

于 2012-12-24T23:26:38.543 に答える
1

JSON.parse()JSON 文字列から対応するデータに変換するには、を使用する必要があります。

var evt = JSON.parse($(data).text());
console.log(evt.meat);

jQuery はこれを自動的に行うことができます。また:

  1. $.getJSON()AJAX 呼び出しを実行するための呼び出し。
  2. dataType: 'json'AJAX 呼び出しの options パラメータで指定します。
  3. サーバーはヘッダー「Content-type: application/json」を送信します
于 2012-12-24T23:26:57.720 に答える
0
var obj = JSON.parse(data);
var val = obj['meat'];
于 2012-12-24T23:26:45.497 に答える