无法访问返回的 json 对象中的属性

发布于 2025-01-03 23:02:08 字数 897 浏览 2 评论 0原文

我从 ajax 请求获取响应并将 request.responseText 存储在名为 requestData 的变量中。 requestData 数据包含 php 使用 json_encode() 传递的 json 对象。

请参阅我在下面制作的几条日志。

requestData : {"status":"ok","to":"","html":"<option value=\"Huberdeau\">Huberdeau<\/option><option value=\"Bo\u00eeleau\">Bo\u00eeleau<\/option><option value=\"Br\u00e9beuf\">Br\u00e9beuf<\/option><option value=\"Saint-R\u00e9mi-d'Amherst\">Saint-R\u00e9mi-d'Amherst<\/option><option value=\"Harrington\">Harrington<\/option>","message":"old"}

我的问题是我无法访问变量状态。以下调用均未正确获取该值。

requestData[status] : undefined
requestData.status : undefined
requestData['status'] : undefined
requestData[0]['status'] : undefined

当我尝试通过 for log 转储变量时,它会将其视为字符串。

dump_var :
0:{
1:"
2:s
3:t
4:a
5:t
6:u
7:s
8:"
9::

I get a response from an ajax request and store request.responseText in a variable called requestData. requestData data contains a json object pass by php using json_encode().

See a couple of log I made bellow.

requestData : {"status":"ok","to":"","html":"<option value=\"Huberdeau\">Huberdeau<\/option><option value=\"Bo\u00eeleau\">Bo\u00eeleau<\/option><option value=\"Br\u00e9beuf\">Br\u00e9beuf<\/option><option value=\"Saint-R\u00e9mi-d'Amherst\">Saint-R\u00e9mi-d'Amherst<\/option><option value=\"Harrington\">Harrington<\/option>","message":"old"}

My probleme is that I can't access the variable status. None of the following calls get the value properly.

requestData[status] : undefined
requestData.status : undefined
requestData['status'] : undefined
requestData[0]['status'] : undefined

And when I tried to dump my variable by a for log it treated it like string.

dump_var :
0:{
1:"
2:s
3:t
4:a
5:t
6:u
7:s
8:"
9::

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

莫言歌 2025-01-10 23:02:08

在 jQuery 中,

使用$.getJSON 而不是

$.get

$.getJSON(url, function(data){
     alert(data.someField);
});

,那么你不需要执行 eval !

in jQuery

instead of $.get

use $.getJSON

$.getJSON(url, function(data){
     alert(data.someField);
});

then you don't need to do eval !!

放飞的风筝 2025-01-10 23:02:08

我在另一个问题的评论中发现了窍门。无论如何,我将其发布在这里,因为在 原始讨论

var requestData = request['responseText'];
var jsonData = eval("( " + requestData + ")");

I have found the trick in a comment on an other question. I post it here anyway cause it's a bit difficult to notice in the original discussion.

var requestData = request['responseText'];
var jsonData = eval("( " + requestData + ")");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文