3

AJAX 応答から JavaScript オブジェクトを作成するにはどうすればよいですか?

これは私が現在やっていることです:

PHP:

<?
echo '{status:"1", site:"example.com"}';
?>

JS:

success:function(data_response){
    var object = eval( data_response );
    console.log(object.url);
    }});

現在、コンソールで「未定義」になっています。これはどのように行われますか?

4

4 に答える 4

5

dataTypeajax リクエストの を に設定するjsonと、data_responseは既に解析されたオブジェクトになります。

または、使用することもできます$.getJSON

于 2012-09-15T03:46:55.077 に答える
2

次のようなこともできます。

PHP

<?
echo json_encode(array("status"=>1,"site"=>"example.com"));
?>

Ajax は、JS のパラメーターを使用してここで呼び出します

$.ajax({
  url: url, // your url where the php is
  dataType: 'json', 
  data: data, //send data
//callback
  success: function(data_response){  
      alert(data_response.status);
      alert(data_response.site);
}
});
于 2012-09-15T04:03:24.753 に答える
1

独自の json 表記を作成する代わりに、組み込みの php を使用しますjson_encode

<?php
    return json_encode(array('status' => '1', 'site' => 'example.com'));
?>

また、ログを記録していますobject.urlが、object.site.

application/jsonの代わりに返すようにヘッダーを設定する必要がある場合もありますtext/html。これはdataType、AJAX リクエストで type パラメータを指定して行うこともできます。json

于 2012-09-15T03:46:36.097 に答える
0

を使用して生のオブジェクト文字列を解析する場合evalは、オブジェクト表記コードを括弧で囲む必要があります。

var object = eval( '(' + data_response + ')' );

以下はパーサーをチョークします:

eval('{status:"1", site:"example.com"}')

しかし、これは期待どおりに機能します。

eval('({status:"1", site:"example.com"})')

編集:注意してください、私は必ずしもこの解決策を支持しているわけではありません。これは、 を使用する場合に何が必要evalを理解するためのものです。

于 2012-09-15T04:09:26.713 に答える