>和<打破json_encode,如何编码属性?

时间:2012-09-23 00:22:56

标签: php jquery json

我试图用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);
        }
    });
});
});

4 个答案:

答案 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')));