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 请求的 设置为jsondata_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

而不是使用内置的 php 来制作自己的 json 表示法json_encode

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

你也在记录object.url,但它应该是object.site.

您可能还需要将标题设置为 returnapplication/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 回答