2

所以我想写一个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

你也可以像这样测试它是否是一个数组:

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

在 Javascript 中测试类型以推断其他条件通常是一个坏主意。似乎在这种情况下,如果找到邮政编码,则返回一个数组(某物)。

因此,您得出的结论是,如果您没有得到数组,则找不到邮政编码。这不是特别健壮,服务器最好返回一个更有用的已定义消息或错误代码,例如它可以建议是否找不到邮政编码、输入无效或数据库不存在可用的。

您还可以对返回的数组进行测试以查看它是否具有您想要的功能(即使用功能检测)。

于 2013-03-11T02:43:25.060 回答