如何从 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);
}});
我目前在控制台上得到“未定义”。这是怎么做到的?
将dataTypeajax 请求的 设置为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.