1

jQuery 1.9.1 を使用して、サーバーにコールバックしてデータを確認します。

    $form = $("#form2")
    var str  = $form.serialize();
    status = true; 
    $.ajax({
           type    : 'POST',
           url     : 'check_zip.php', 
           data    : str,
           async   : false,
           success : function (data) {
             obj = JSON.parse(data); 
             var result = obj.result;
             status = result; 
           },
           error   : function (msg) {
               alert(msg);
               status = false;
           }
       });

    if (status == "false" || status === false) {
        ....

Chrome はステータス "false" (文字列) を返し、Firefox はステータス false (ブール値) を返すことがわかりました。これは予想される動作ですか?びっくりしました!

解析される JSON はデータです: "{"result":false}"

typeof(status) は、Chrome では文字列、FF ではブール値です。

問題はここで発生するようです:

         var result = obj.result;
         status = result; 

Chrome の結果のデータ型はブール値であるのに対し、ステータスのデータ型は文字列であるためです。

デバッガーに表示される変数の変更

4

2 に答える 2