gpt4 book ai didi

javascript - jQuery.parseJSON 不适用于给定的字符串

转载 作者:行者123 更新时间:2023-11-28 12:43:52 25 4
gpt4 key购买 nike

jQuery.parseJSON 不适用于以下字符串:

({"stat":"OK","code":400,"data":[{"title":"Development Convention","event_type":false,"dates_and_times":[{"date":"28\/03\/2012","start_time":"10:00 AM","end_time":"10:00 AM"},{"date":"29\/03\/2012","start_time":"10:00 AM","end_time":"10:00 AM"},{"date":"30\/03\/2012","start_time":"12:00 PM","end_time":"12:00 PM"}],"description":"<p>This event will discuss different trends in development.<\/p>\n","featured_image":"<img src=\"http:\/\/mysite.com\/pesticide-free-organic-meal.jpg\" class=\"attachment-full wp-post-image\" alt=\"bavarian food plates with chicken and wine\" title=\"bavarian food plates with chicken and wine\" \/>","image_gallery":[{"url":"http:\/\/mysite.com","alt":false}]}]})

这是我接收数据的地方:

$.get( 
api_url,
{ method: "list_events", venue_id: 73, event_date: 'null' },
function( data ) {
alert(data); // Shows the above string
var response = jQuery.parseJSON( data );
alert(1); // Doesn't appear
alert(response.stat); // Doesn't appear
}
);

任何人都可以提供任何关于为什么它可能不起作用的见解吗?我在 stackoverflow 上的其他地方读到反斜杠必须再次转义;替换 \ 的所有实例与 \\使用data = data.replace(/\\/g,"\\\\");没有解决问题。

最佳答案

您的字符串不是有效的 JSON,() 在那里无效。看起来该服务已设置为返回 JSONP。

如果您在 URL 中包含 ?callback=? 并使用 $.getJSON [docs] ,那么 jQuery 将正确完成所有解析。

示例:

$.getJSON(
api_url + '?callback=?',
{ method: "list_events", venue_id: 73, event_date: 'null' },
function( data ) {
alert(data.stat);
}
);

callback 是表示回调函数名称的标准参数名称,但服务可能需要其他参数名称。在这种情况下请参阅其文档。

另请查看$.ajax [docs]了解更多信息。

<小时/>

另一种但不太干净的解决方案是 trim 括号的开头和结尾:

var response = $.parseJSON(data.replace(/^\(|\)$/g, ''));
<小时/>

当然,如果服务位于同一个域中并且您可以控制它,则可以简单地返回 JSON。

关于javascript - jQuery.parseJSON 不适用于给定的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10062560/

25 4 0
文章推荐: javascript - jquery中的li元素列表
文章推荐: css - 无法正确放置
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com