Jquery Country/State Json and more



我想要完成的是:

我有一个乡村盒子。

<select class="country singleListBox" name="Country">
    <option value="UNITED STATES">UNITED STATES</option>
    <% Call GetCountry %>
</select>

GetCountry所做的只是用客户端启用的国家/地区填充它。

我有一个状态框。

<select class="autoship singleListBox" name="State">
    <option value="active">Utah</option>
</select>

我有一个构建JSON的页面,该页面要么包含所选国家的状态列表,要么返回空值。

以下是它看起来不是空的:

{
    "regions": [
        {
            "region": "AK"
        },
        {
            "region": "AL"
        },
        {
            "region": "AR"
        },
        {
            "region": "AS"
        },
        {
            "region": "AZ"
        },
        {
            "region": "CA"
        },
        {
            "region": "CO"
        },
        {
            "region": "CT"
        },
        {
            "region": "DE"
        },
        {
            "region": "DC"
        },
        {
            "region": "FM"
        },
        {
            "region": "FL"
        },
        {
            "region": "GA"
        },
        {
            "region": "GU"
        },
        {
            "region": "HI"
        },
        {
            "region": "ID"
        },
        {
            "region": "IL"
        },
        {
            "region": "IN"
        },
        {
            "region": "IA"
        },
        {
            "region": "KS"
        },
        {
            "region": "KY"
        },
        {
            "region": "LA"
        },
        {
            "region": "ME"
        },
        {
            "region": "MH"
        },
        {
            "region": "MD"
        },
        {
            "region": "MA"
        },
        {
            "region": "MI"
        },
        {
            "region": "MN"
        },
        {
            "region": "MS"
        },
        {
            "region": "MO"
        },
        {
            "region": "MT"
        },
        {
            "region": "NE"
        },
        {
            "region": "NV"
        },
        {
            "region": "NH"
        },
        {
            "region": "NJ"
        },
        {
            "region": "NM"
        },
        {
            "region": "NY"
        },
        {
            "region": "NC"
        },
        {
            "region": "ND"
        },
        {
            "region": "MP"
        },
        {
            "region": "OH"
        },
        {
            "region": "OK"
        },
        {
            "region": "OR"
        },
        {
            "region": "PW"
        },
        {
            "region": "PA"
        },
        {
            "region": "PR"
        },
        {
            "region": "RI"
        },
        {
            "region": "SC"
        },
        {
            "region": "SD"
        },
        {
            "region": "TN"
        },
        {
            "region": "TX"
        },
        {
            "region": "UT"
        },
        {
            "region": "VT"
        },
        {
            "region": "VI"
        },
        {
            "region": "VA"
        },
        {
            "region": "WA"
        },
        {
            "region": "WV"
        },
        {
            "region": "WI"
        },
        {
            "region": "WY"
        },
        {
            "region": "AA"
        },
        {
            "region": "AE"
        },
        {
            "region": "AP"
        }
    ]
}

以下是它看起来是空的:

{
    "regions": [
        {
            "region": "empty"
        }
    ]
}

我想做的是,当他们更改发布到我的json页面上的Country的值时,它会吐出找到的区域,或者留下字符串值为空的区域。

对我来说,诀窍是如果它返回一个区域列表,我需要将其构建到上面的select -> option部分中。但如果它返回空,那么我需要一个input box here of type text来代替select -> option

实现这一目标的最佳方式/最佳实践是什么?当他们更改国家/地区时,我可以处理JSON的发布,我认为我会遇到的问题是在区域为空时切换出输入的选择。

我正试图将其解析为一个jquery对象,但没有取得多大成功。

$('select[name=Country]').change(function () {
                console.log(this.value);
                $.getJSON('message_center_getRegions.asp', { country: this.value }, function (json) {
                var options = '';
                var obj = $.parseJSON(json);
                console.log('count' + obj.regions.count);
                console.log(json); 
            })

I console.log(json),并且它示出了具有62个不同区域的对象。当我在数据库中选择一个没有地区的国家时,它会正确地显示为空。我似乎无法让obj不为空console.log('count' + obj.regions.count);obj is null

理想情况下,如果没有区域,则响应不应返回

"regions" : [ { "region" : "empty" } ]

它应该只返回一个像这样的空列表

"regions" : []

现在,当您将JSON解析为Javascript对象时,regions.count将为0。

所以,

// parse response into JS object
if (regions.count > 0)
{
    //create select element here
}
else
{
    //input element here
}

最新更新