0

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フォームプラグインを使用しています-> 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

4 に答える 4

3

の呼び出しを削除してjQuery.parseJSON、オプションを使用してみてくださいdataType: 'json'.ajaxSubmitを使用しjQuery.ajaxて、応答の形式を把握しようとします。これはJSONであると判断された可能性があるため、すでに解析されています。もう一度解析すると、このエラーが発生します。

于 2012-09-23T01:43:01.667 に答える
2

これは単なる推測ですが、JSONエコーの前にこれを追加してみてください(とにかくそこにあるはずです)。

header('Content-type: application/json');

これにより、https://stackoverflow.com/questions/267546/correct-http-header-for-json-fileが設定されます。そうでない場合、コンテンツタイプはデフォルトでに設定されtext/html、jQueryを混乱させる可能性があると思います。

また、コメントに従って、使用しているjavascriptを表示してください。

于 2012-09-23T00:34:35.013 に答える
1

応答データ型を設定します。

$(this).ajaxSubmit({
  dataType: "json",
  ....
});
于 2012-09-23T01:05:21.243 に答える
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')));
于 2012-09-23T00:25:50.810 に答える