数组是.Array if和else语句

时间:2013-03-10 23:47:07

标签: javascript jquery ajax

所以我想写一个if else语句,如果Array.isArray为false,则显示一条消息。我在下面的功能允许用户输入地址,单击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);  
});

3 个答案:

答案 0 :(得分:3)

除非您修改了Array.prototype,否则没有Array.isArray方法。我认为你要找的是$.isArray

答案 1 :(得分:0)

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

function isArray(arr) {
    return Object.prototype.toString.apply(arr) === '[object Array]';
}

答案 2 :(得分:0)

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

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

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