0

Phone Gap.Language Used[HTML,css,JavaScript]を使用して Windows Phone 7 アプリケーションを開発しています。

Get Json Data Web service And Bind In Drop Down List の Web サービスを使用しています。

単一ページで、5 つの AJAX 呼び出しを使用しています Ex[年齢、身長、宗教、キャスト、国、言語、ステータス、教育]

私のサンプル Ajax Call For Age を以下に示します。

 $.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
     url: "https://www.xxxxxxxx.com/yyyyyyyy/zzzzzzzzzz.svc/GetMasterDataoverHTTPS?AuthToken=" + encodeAuthtoken + "&ListKey=" + encodeListkey + "&ListValue=" + encodeMinAge,
    crossDomain: true,
    dataType: "jsonp",
    success: function (data) {
        var result = data;
        $.each(result, function (key, value) {
            var appenddata = "<option value = '" + value.ListKey + "'>" + value.ListValue + " </option>";
            $('#ddlSFromAge').html($('#ddlSFromAge').html() + appenddata);
        });

        //alert(result);
    },
    error: errorResponse
});

function errorResponse(xhr, ajaxOptions, thrownError) {

    alert('Error on Ajax Call' + '\n Status: ' + xhr.status + '\n Response Text: ' + xhr.responseText + '\n Error: ' + thrownError);
}enter code here

For Each And Ever Drop Down を Like This と呼びます。私はこれが良くないことを知っています。

このAJAX呼び出しを減らす方法を教えてください[ド​​ロップダウンごとに個別のURLを使用]

4

2 に答える 2

0

コードを次のように変更しました クレジットは @Dom に移動します

<script type="text/javascript">
    doAjaxCall("Country");
    doAjaxCall("Language");
    doAjaxCall("religion");
    doAjaxCall("Caste");

    function doAjaxCall(type) {
        var url;
        switch (type) {
            case "Country":
                url = "https://www.xxxxxx.com/yyyyyyy/GetCountryoverHTTPS?AuthToken=Z0lFITFVMw==&FormCode=U1A=";
                ajaxCall(url, '#ddlCountry');
                break;
            case "Language":
                url = "https://www.xxxxxx.com/yyyyyyy/GetLanguageoverHTTPS?AuthToken=Z0lFITFVMw==&FormCode=U1A=";
                ajaxCall(url, '#ddlLanguage');
                break;
            case "religion":
                url = "https://www.xxxxxx.com/yyyyyyy/GetReligionoverHTTPS?AuthToken=Z0lFITFVMw==&FormCode=U1A=";
                ajaxCall(url, '#ddlReligion');
                break;
            case "Caste":
                url = "https://www.xxxxxx.com/yyyyyyy/GetMotherTongueoverHTTPS?AuthToken=Z0lFITFVMw==&FormCode=U1A=";
                ajaxCall(url, '#ddlMother');
                break;

            default:
                url = ""; //or some other code to execute if type doesnt match anything
        }
        function ajaxCall(paramurl,paramControlId) {
            $.ajax({
                type: "GET",
                contentType: "application/json; charset=utf-8",
                url: url,
                crossDomain: true,
                dataType: "jsonp",
                success: function (data) {
                    var result = data;
                    $.each(result, function (key, value) {
                        var appenddata = "<option value = '" + value.ListKey + "'>" + value.ListValue + " </option>";
                        $(paramControlId).html($(paramControlId).html() + appenddata);
                    });

                    //alert(result);
                },
                error: errorResponse
            });
            function errorResponse(xhr, ajaxOptions, thrownError) {

                alert('Error on Ajax Call' + '\n Status: ' + xhr.status + '\n Response Text: ' + xhr.responseText + '\n Error: ' + thrownError);
            }
        }
    }
</script>`
于 2013-10-17T14:28:35.670 に答える
0

データ型が動的であるため、非常に多くの ajax 呼び出しを使用していると思いますか? それらが動的でない場合は、デバイスのsqliteデータベースを使用して値を保存し、それを照会することを検討する必要があります。ドキュメントはここにあります。

データが動的であるため、本当に多くの呼び出しを行う必要がある場合は、それで十分です。ただし、5 つの個別の AJAX 関数を使用する代わりに、1 つの関数を使用して、使用する URL を関数にfunction ajaxCall('http://www.myserviceurl')渡すか、値を渡してスイッチを再度実行し、使用する URL を決定することができます。

于 2013-10-16T14:10:26.930 に答える