jquery で json parse each 繰り返し

2013年10月20日更新 view: 618 view
photoBy: http://zoomzum.com/wp-content/uploads/2011/06/jqu…

jqueryで繰り返し解析しようとするとバグる。

取得したjsonが decode されていないか確認

まずはphpで

$res = htmlspecialchars_decode($json);

とやって quote を & などに直しておく。

jqueryの繰り返しバグ

each の this をやるとなぜか文字列が配列になりバグる。
よって i を使ってjsonを取得

<script type="text/javascript">

var jsons = ['{"name":"john", "age":18}','{"name":"taro", "age":18}',];




    $(function() {
        
        

        //配列の場合
         $.each(jsons,function(i) {
        
        
            var parseJSON = $.parseJSON(jsons[i]);
            alert(i + "番目:" + parseJSON.name);
        });

    });


</script>

this ではなく、 jsons[i] を使うのがミソ。

さらに改行コードや \" があるとバグるので除去

jsons[0] = jsons[0].replace(/\r\n|\r|\n/g, "");
jsons[0] = jsons[0].replace(/<(.*?)>/g, "");

さらにajaxの結果を配列で受け取る

スポンサードリンク

phpで json_encode

作った配列をphpでjson_encodeしておく

header("Content-Type: application/json; charset=utf-8");
$ar = array('hoge','mange');
$res = json_encode($ar);
return $res;

jsonで出力するときは必ず
header("Content-Type: application/json; charset=utf-8");
をやっておく。
でないと、
Uncaught SyntaxError: Unexpected token < というエラーが出る。

jqueryで元に戻す

$(function() {
    
    $.ajax({
        type: "POST",
        url: url,
        success: function(msg){
                
                var jsons = $.parseJSON(msg);//ここで配列に戻す
                
                 $.each(jsons,function(i) {
                    
                    jsons[i] = jsons[i].replace(/\r\n|\r|\n/g, "");
                    jsons[i] = jsons[i].replace(/<(.*?)>/g, "");
                    
                });
                
            
        },
        
    
        
    });
    
    
});
スポンサードリンク

関連記事

関連カテゴリ

コロ助

web関連の記事や制作系の記事をどんどんまとめていきます。 宜しくお願いします!

ピックアップ

パソコン・ソフトウェア ランキング

12月12日 ( 火 ) にアクセスが多かった記事はこちら!