0

我正在使用 Phone Gap.Language Used[HTML,css,JavaScript] 开发 Windows Phone 7 应用程序

我正在使用 Web 服务来获取 Json 数据 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 我这样称呼。我知道这不好。

任何人告诉我如何减少此 AJAX 调用的 [对于使用的每个下拉单独的 URL]

4

2 回答 2

0

我猜你正在使用这么多的 ajax 调用,因为数据类型是动态的?如果它们不是动态的,那么您真的应该考虑使用设备 sqlite 数据库来存储您的值并进行查询。文档可以在这里找到。

如果你真的需要打那么多电话,因为数据是动态的,那就这样吧。但是,您可以只使用 1 个函数,而不是使用 5 个单独的 AJAX 函数,然后将函数传递给您希望它使用的 url,function ajaxCall('http://www.myserviceurl')或者传递一个值以再次运行开关以确定要使用的 url。

于 2013-10-16T14:10:26.930 回答
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 回答