2

そこで、ifが false の場合にメッセージを表示するif elseステートメントを書きたかったのです。Array.isArray私が以下に持っている機能により、ユーザーはアドレスを入力し、クリックFind ZipCodeしてそれを行うことができます。関数は機能しますが、無効なアドレスを入力すると、必要なメッセージが表示されません。invalid zipcode

私のHTMLには、次のものがあります。

<label>
Address:
      <input name="address" type="text" id="address"></label>
      <input type="button" value="Find ZipCode" id="find">
<p id="output"></p> 

および Javascript:

var hello = function(data) {
    var result = ""; // empty string to hold the value
    var address = $("#address").val();

    if (! Array.isArray(data))
    {
        $("#output").html("invalid zipcode");
    }
    else {
        for (var i = 0; i < data.length; i++) 
        {
            var zipcode = data[i].zipcode;
            result += address + " zipcode: " + zipcode;
        }
    $("#output").html(result);

    }
};

$("#find").click(function(){
    var address = $("#address").val();
    $("#output").html("Loading...");            
    $.getJSON("zipcodelookup.php", "address="+address , hello);  
});
4

3 に答える 3

3

を変更しない限り、方法Array.prototypeはありませんArray.isArray。あなたが探しているのは だと思います$.isArray

于 2013-03-10T23:50:02.603 に答える
0

他の条件を推測するためにJavascriptで型をテストすることは、多くの場合悪い考えです。この場合、郵便番号が見つかった場合、(何かの)配列が返されるようです。

したがって、配列を取得しない場合、郵便番号が見つからなかったと結論付けています。これは特に堅牢ではありません。たとえば、郵便番号が見つからなかった場合、入力が無効だった場合、データベースが見つからなかった場合など、サーバーがより役立つ定義済みのメッセージまたはエラーコードを返す方がよいでしょう。利用可能。

返された配列に対してテストを実行して、必要な機能があるかどうかを確認することもできます(つまり、機能検出を使用します)。

于 2013-03-11T02:43:25.060 に答える
0

次のようにテストして、配列かどうかを確認することもできます。

function isArray(arr) {
    return Object.prototype.toString.apply(arr) === '[object Array]';
}
于 2013-03-10T23:55:11.500 に答える