1

更新 申し訳ありませんが、これをもっと明確にする必要がありました! 2 段階の Web サービスを使用している場合、最初の呼び出しで完全な番地とキーが返され、それを使用して住所部分を返すことができます。これを行うには、jQuery Autocomplete コンポーネントを使用したかったのですが、その方法がわかりません。

以下は、住所部分のフォローアップ リクエストを作成するために使用できるキーを含む完全な住所を返す最初の Web サービスです。

jsonCallback({
"Address": [
    {
        "Moniker": "03OAUSAQXcBwEDAQAAAAAvuBHAAAAAADMxABQA",
        "FullAddress": "31KhanRoad,GURRANANGNSW2460"
    },
    {
        "Moniker": "0XOAUSAQXcBwEDAQAAAAAvuBHAAAAAADMzABQA",
        "FullAddress": "33KhanRoad,GURRANANGNSW2460"
    },
    {
        "Moniker": "0POAUSAQXcBwEDAQAAAAAvuBHAAAAAADM1ABQA",
        "FullAddress": "35KhanRoad,GURRANANGNSW2460"
    },
    {
        "Moniker": "0NOAUSAQXcBwEDAQAAAAAvuBbAAAAAAAAUAA--",
        "FullAddress": "43KhanRoad,GURRANANGNSW2460"
    }
]

}))

そして、特定の選択のJSONを返すためのフォローアップ呼び出しがあります。これは、最終的にデータベースに保存する必要がある情報です。

結果の JSON オブジェクト:

jsonCallback({"Result":"OK","Address":{"DPID":"68847810","Full Address":"20 Some Ct, TRUGANINA VIC 3029","Unit Number":"","Street Number":"19","Street Name":"Khan","Street Type":"Court","Street Type Suffix":"","Suburb":"TRUGANINA","State":"VIC","Postcode":"3029","Building Name":"","Building Name 2":""}});
4

1 に答える 1

0

最後にそれを考え出した

$( "#addressline" ).autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "http://www.website.com.au/WebApp.asp?action=parse&reqtype=cnlist&ResultType=JSON&callback=?",
                dataType: "jsonp",
                data: { adddata: request.term },
                success: function( data ) {
                    //console.log(data.Address);
                    response( $.map( data.Address, function( item ) {
                        console.log(item);
                        return {
                            value: item["Moniker"],
                            label: item["Full Address"]
                        }
                    }));
                },
                error:function(){

                    alert('error');
                }

            });
        },
        minLength: 5,
        focus: function( event, ui ) {
            $( "#addressline" ).val( ui.item.label );
            return false;
        },
        select: function( event, ui ) { 
            //  show label in box, not value
            $( "#addressline" ).val( ui.item.label ); 
            $( "#addressline_moniker_hidden").val(ui.item.value);
            $.ajax({
                url: "http://www.website.com.au/WebApp.asp?action=parse&reqtype=Mcntab&resulttype=JSON&callback=?",
                dataType: "jsonp",
                data: { moniker: ui.item.value },
                success: function( data ) {

                    if(data.Address){
                        console.log(data.Address);

                        // set hidden fields with verified address
                        $('#dpid').val(data.Address.DPID);
                        if(data.Address.qaserror){
                            $('#qaserror').val(data.Address.qaserror);
                        }

                        $('#unitno').val(data.Address["Unit Number"]);
                        $('#streetno').val(data.Address["Street Number"]);
                        $('#streetname').val(data.Address["Street Name"]);
                        $('#streettype').val(data.Address["Street Type"]);
                        $('#suburb').val(data.Address.Suburb);
                        $('#state').val(data.Address.State);
                        $('#postcode').val(data.Address.Postcode);

                        // show verification msg
                        $( "#addrverified" ).text('Address VERIFIED').effect("pulsate", { times:2 }, 2000);


                    }
                },
                error:function(){

                    alert('error');
                }

            });

            console.log( ui.item ?
                "Selected: " + ui.item.label :
                "Nothing selected, input was " + this.value);
            return false;

        },
        change: function(event, ui) { 

        }

    });
于 2012-06-21T12:15:27.347 に答える