7

いくつかのタスクのためにphp配列をjqueryに渡す必要があります。php配列はSESSION用に作成され、json_encoded用にjquery用に作成されます。その後、jqueryスクリプトで配列を使用するために、その変数をwindowjs名前空間に格納します。

if(isset($_SESSION['mySession'])){
    $json_array = json_encode($php_array);
}

<script>
    <?php echo "window.json_from_php = ".$json_array; ?>
</script>

私がする必要があるのは、何かをする前に、この配列がまったく存在するか、空であるか、未定義であるかを確認することです。check句は、「undefined」オペランドでは成功しますが、残りの部分では成功しません。配列が空かどうかをjqueryで確認するにはどうすればよいですか?

これは、$ php_arrayに要素がない場合の、初期化後のjson_encoded配列の出力です。

string '[""]' (length=4)

そしてここにjqueryがあります:

$(function() {
        var results = $('#results');
        var js_array = window.json_from_php;
        var count = js_array.length;

        if ((typeof window.json_from_php === 'undefined') || (js_array === null) || (jQuery.isEmptyObject(js_array)) || (count === 0)) {
            $('<p>Array is empty.</p>').appendTo(results);
        }
        else {
            jQuery.each(js_array,function(key,val){
                $('<ul><li id="'+key+'">'+val+'</li></ul>').appendTo(results);                  
            });
        }
    });
4

2 に答える 2

19

これは、空/null json 配列をチェックする方法です。

if (js_array == undefined || js_array == null || js_array.length == 0){
    $('<p>Array is empty.</p>').appendTo(results);
}

あなたのjson配列がそうであれば、次の[""]ようなものを追加する必要があるかもしれません

if (js_array == undefined || js_array == null || js_array.length == 0 || (js_array.length == 1 && js_array[0] == ""))
于 2012-11-14T16:00:37.723 に答える
1

これで十分です:

if (typeof js_array === 'undefined' || !js_array.length) {
   $('<p>Array is empty.</p>').appendTo(results);
} else {...}
于 2012-11-14T16:20:01.797 に答える