JQuery,JSON-JSON数据中有引号的问题
我试图读取包含引号的JSON数据,引号可以有效地转义字符串,并将随后的文本视为变量。我怎样才能避免这种情况发生?这是JSON提要(它内置于表达式引擎中,因此忽略大括号):JQuery,JSON-JSON数据中有引号的问题,jquery,json,character-encoding,expressionengine,Jquery,Json,Character Encoding,Expressionengine,我试图读取包含引号的JSON数据,引号可以有效地转义字符串,并将随后的文本视为变量。我怎样才能避免这种情况发生?这是JSON提要(它内置于表达式引擎中,因此忽略大括号): ([ {exp:channel:entries channel=“blog”limit=“10”dynamic\u start=“on”disable=“member\u data”} { “标题”:“{exp:url\u encode}{title}{/exp:url\u encode}”, “正文”:“{blog_one_
([
{exp:channel:entries channel=“blog”limit=“10”dynamic\u start=“on”disable=“member\u data”}
{
“标题”:“{exp:url\u encode}{title}{/exp:url\u encode}”,
“正文”:“{blog_one_liner}”,
“链接”:“{blog\u image\u link}”,
“img”:“{blog_image}”
},
{/exp:channel:entries}
]);
下面是jquery中发生的解析:
function loadBlog(){
$.getJSON("http://superfad.com/work/work_json?callback=?&test=test", blogLoaded);
}
function blogLoaded(data){
for (dataIndex in data) {
var blogTitle = decodeURI(data[dataIndex].title);
var blogContent = data[dataIndex].body;
var blogLink = data[dataIndex].link;
var blogImg = data[dataIndex].img;
$("#blog_results").append('<li class="blog"><a href="' + blogLink + '" target="_blank"><img class="blog_img" src="' + blogImg + '"/></a><span class="blogtitle">'+ blogTitle + '</span> - '+ blogContent + '</li>');
};
}
函数loadBlog(){
$.getJSON(“http://superfad.com/work/work_json?callback=?&test=test“,已加载);
}
已加载函数(数据){
for(数据中的数据索引){
var blogtile=decodeURI(数据[dataIndex].title);
var blogContent=data[dataIndex].body;
var blogLink=data[dataIndex].link;
var blogImg=data[dataIndex].img;
$(“#blog_results”).append(“”+blogtTitle+”-“+blogContent+” ”);
};
}
您可以看到,对于标题,我尝试了在表达式引擎中编码(工作正常)和在javascript中解码(不工作)。我看到JSON具有某种linkify功能,但如果不切换到JQuery的AJAX功能,我就不知道如何实现它。我想做的是完全避免表达式引擎编码,尽可能使用Javascript(必要时使用PHP)。尝试使用
decodeURIComponent()
而不是decodeURI()
decodeURI代表完整的URL,而decodeURIComponent适用于任何字符串。尝试使用
decodeURIComponent()
而不是decodeURI()
decodeURI代表完整的URL,而decodeURIComponent适用于任何字符串。您是否尝试过“unescape('encoded string')”?为了解决“+”问题,您可以
// Create a regular expression to search all +s in the string
var lsRegExp = /\+/g;
// Return the decoded string
return unescape(String(psEncodeString).replace(lsRegExp, " "));
参考资料:您是否尝试过“unescape('encoded string')”?为了解决“+”问题,您可以
// Create a regular expression to search all +s in the string
var lsRegExp = /\+/g;
// Return the decoded string
return unescape(String(psEncodeString).replace(lsRegExp, " "));
参考资料:Unescape有效,但表示空格的+符号(来自表达式引擎)仍然有效。Unescape有效,但表示空格的+符号(来自表达式引擎)仍然有效。问题与上述相同,但是的,decodeURIComponent有效,谢谢。问题与上述相同,但是的,decodeURIComponent有效,谢谢。