我试图用PHP编写json中的一些html。该函数从PHP文件请求数据,然后将append
放入html页面。该函数正常工作,直到我有<或者>在我试图传递的字符串中。这是我的PHP代码:
$append = "<b>Edit</b>";
for($i=0;$i<count($atarray);$i++)
{
$append .= $atarray[0]['atname'];
}
$json = json_encode(array('ok' => '0', 'apso' => $append));
echo $json;
这很好用,如果不是"<b>edit</b>"
我使用"Edit"
,有没有办法让它工作,包括HTML标签?
每当我运行该函数时,控制台中出现的错误都是Uncaught SyntaxError: Unexpected token < jquery-1.7.js:2
。
的JavaScript
我正在使用jQuery表单插件 - &gt; http://archive.plugins.jquery.com/project/form
它将变量发送为POST
数据
但这是我的功能
$(function(){
$("#change").submit(function(e){
e.preventDefault();
$(this).ajaxSubmit({
beforeSubmit:function(before){
$('#loadingsignup').show();
$("#resultsignup").empty().hide();
},
success:function(retour){
$('#loadingsignup').hide();
res=jQuery.parseJSON(retour);
if(res.ok==1){
$('#resultsignup').append('<p class="good"><?php echo $lang['107']; ?></p>');
if(res.img!==undefined){
$('#eaim').attr('src','/images/artistsprofilepic/'+res.img);
}
}else if(res.apso!==undefined){
var ap=res.apso;
$('#apso').append(ap);
}else{
$('#resultsignup').append('<p class="pasgood">'+res.err+'</p>');
}
$("#resultsignup").hide().fadeIn(500);
setTimeout("$('#resultsignup').fadeOut();",5000);
}
});
});
});
答案 0 :(得分:3)
尝试删除对jQuery.parseJSON
的调用,并使用选项dataType: 'json'
。 .ajaxSubmit
使用jQuery.ajax
,它试图找出响应的格式,并且可能已经确定它是JSON,因此它已经被解析了。再次解析会导致此错误。
答案 1 :(得分:2)
这只是一个猜测,但尝试在你的JSON回声之前添加它(它应该在那里)。
header('Content-type: application/json');
这会设置https://stackoverflow.com/questions/267546/correct-http-header-for-json-file,否则它会将内容类型默认为text/html
,我认为这可能会混淆jQuery。
另外,根据评论,请显示您正在使用的javascript。
答案 2 :(得分:1)
设置响应数据类型:
$(this).ajaxSubmit({
dataType: "json",
....
});
答案 3 :(得分:0)
您可以使用htmlentities()
$json = htmlentities(json_encode(array('ok' => '0', 'apso' => $append)), ENT_NOQUOTES, 'UTF-8');
http://php.net/manual/en/function.htmlentities.php
您也可以选择仅对$append
变量中的值进行编码,如下所示:
$json = json_encode(array('ok' => '0', 'apso' => htmlentities($append, ENT_NOQUOTES, 'UTF-8')));