0

私が達成しようとしていることは次のとおりです。

カントリーボックスがあります。

<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ページに投稿する国の値を変更して、見つかったリージョンを吐き戻すか、リージョンの文字列値を空のままにすることです。

私にとっての秘訣は、リージョンのリストが返される場合、これを上記の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); 
            })

console.log(json)とそれは62の異なる領域を持つオブジェクトを示しています。データベースに地域がない国を選択すると、空であると正しく表示されます。objがnullにならないようにすることはできませconsole.log('count' + obj.regions.count);obj is null

4

1 に答える 1

1

理想的には、リージョンがない場合、応答は返されないはずです

"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
}
于 2012-04-03T22:04:10.377 に答える