2012-09-15 136 views
3

如何从AJAX响应中创建JavaScript对象?从ajax请求获取javascript对象

这是目前我在做什么:

PHP:

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

JS:

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

我目前得到 “未定义” 在控制台上。这是如何完成的?

回答

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); 
} 
}); 
1

,而不是使自己的JSON对象使用PHP内置json_encode

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

而且你登录object.url但它应该是object.site

您可能还需要设置标题返回application/json而不是text/html。这也可以通过指定您的AJAX请求dataType类型参数做json

5

设置Ajax请求的dataTypejson,而data_response将已经被解析到一个对象。

或者你也可以使用$.getJSON也。

0

您的PARAMS如果你想分析使用eval原始对象字符串,您必须将对象符号代码包装在parens中:

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

下面将呛解析器:

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

但是,这将作为你希望:

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

编辑:请注意,我并不赞同这个解决方案。这只是让你明白需要什么如果你打算使用eval