如何从 AJAX 响应创建 javascript 对象?
这就是我目前正在做的事情:
PHP:
<?
echo '{status:"1", site:"example.com"}';
?>
JS:
success:function(data_response){
var object = eval( data_response );
console.log(object.url);
}});
我目前在控制台上得到“未定义”。这是怎么做到的?
如何从 AJAX 响应创建 javascript 对象?
这就是我目前正在做的事情:
PHP:
<?
echo '{status:"1", site:"example.com"}';
?>
JS:
success:function(data_response){
var object = eval( data_response );
console.log(object.url);
}});
我目前在控制台上得到“未定义”。这是怎么做到的?
将dataType
ajax 请求的 设置为json
,data_response
将是一个已经解析到的对象。
或者你也可以使用$.getJSON
。
你也可以尝试这样的事情:
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);
}
});
而不是使用内置的 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
如果要使用 解析原始对象字符串eval
,则必须将对象表示法代码包装在括号中:
var object = eval( '(' + data_response + ')' );
以下将阻塞解析器:
eval('{status:"1", site:"example.com"}')
但这将按您的预期工作:
eval('({status:"1", site:"example.com"})')
编辑:请注意,我不一定赞同这个解决方案。这只是为了让您了解如果要使用eval
.