我有一个案例,我必须通过json对象从客户端向服务器端发送html代码,但是html标记内的符号会导致一些问题,例如“,/ ...等等,这会产生错误json对象。我尝试了很多方法来构建json但是没有一个是正确的。我跳了你清楚地了解我的情况。 这是我的json结构的一个例子:
{
"html":"the html code injected dynamical here"
}
正如我所说,我的主要问题是我遇到了由html符号引起的问题我该如何解决它!请给我一个关于如何解决这个问题并将html代码成功解析为json对象的明确示例。
答案 0 :(得分:2)
我不确定您是如何构建JSON对象的,但如果您使用的是json_encode()
和json_decode()
,则不应该对HTML字符有任何问题,它们将被转义正常。
答案 1 :(得分:1)
不确定如果我误解了问题,但是将json从 服务器 传递到 客户端 ,请使用{ {1}}
http://php.net/manual/en/function.json-encode.php
这应该对你有用,并照顾所有的逃避。
json_encode()
嗯,刚从阅读文档中了解到这一点:
json_encode()无法使用 UTF-8以外的字符集
我看不出为什么你需要把json发送到服务器,也许你可以和我们分享原因,或者有人可以在评论中启发我?
答案 2 :(得分:0)
也许您可以使用网址编码。
答案 3 :(得分:0)
您可以对html进行编码。可以在这里找到一些html编码和解码: http://code.google.com/p/jsool/source/browse/jsool-site/js/util/Encoder.js?r=176
你只需要html.encode和html.decode函数,就像你可以做的那样
function html_encode(string){
return string.replace(/./g,function(chr, index){
return chr.match(/[\w\d]/) ? chr : "&#"+chr.charCodeAt(0)+";" ;
});
},
function html_decode(string){
return string.replace(/&#[0-9]+;/g,function(text,index){
return String.fromCharCode(text.match(/[0-9]+/)[0]);
});
}
你可以这样做
var html = html_encode(myhtml);
{"html": html}
使用html_decode()编码和恢复值。
PS:Sry,我没有测试出html_encode和解码功能,但很容易在谷歌找到一些。答案 4 :(得分:0)
如果您使用的是jQuery,这个js库可能有所帮助。 http://www.rahulsingla.com/blog/2010/05/jquery-encode-decode-arbitrary-objects-to-and-from-json
在发送请求之前在您的javascript中执行以下操作:
var thing = {plugin: 'jquery-json', other: "blah-blah"};
var encoded = $.JSON.encode(thing);
然后在将请求发送到php后,执行此操作以解码:
var thing = json_decode($_POST['thing']);
您可以阅读有关此here
的更多信息