AJAX下拉列表不会使用var string变量更新

时间:2017-12-03 16:48:58

标签: ajax

我有一个测试脚本,可以在更新年份或状态时更新县下拉列表。当我选择年份时使用文字字符串时,县名单更新正常。但是,当我使用ajax调用尝试县列表并使用(var options)构建列表时,即使我验证了(var options)的值包含有效的下拉列表,下拉列表值也会更改为空列表选项。

请帮忙! 谢谢,

$('#State').on("change", function () {
            var state = $('#State').val();
            var year = $('#Year').val();
            var obj = {
                state: state,
                year:year
            };
            alert("State changed:" + state + ":" + year);


            AjaxCall('/RIC/GetCounties', JSON.stringify(obj), 'POST').done
             (function (response) {
                    if (response) {

                        $('#DataId').html("<option value='test'>Test</option>");
                        var options = '';
                        options += "<option value='Select'>Select</option>\n";
                        for (i in response) {
                            options += "<option value='" + response[i].DataId + "'>" + response[i].County + "</option>\n";
                        }
                        $('#DataId').html("<option value='Select'>Select-S</option><option value='16'>Alameda-S</option>");
                        alert("Statitical Areas(S): " + options);
                        //$('#DataId').html(options);     //This should work.  How to get the value of options into the string
                        //$('#DataId').append(options);
                    }
             }).fail(function (error) {
                    alert("County Error:" + error.StatusText);
             });
        });

        $('#Year').on("change", function () {
            var state = $('#State').val();
            var year = $('#Year').val();
            var obj = {
                state: state,
                year: year
            };

            alert("Year changed:" + state +":"+ year);

            AjaxCall('/RIC/GetCounties', JSON.stringify(obj), 'POST').done
                (function (response) {
                    if (response) {

                        $('#DataId').html("<option value='test'>Test</option>");
                        var options = '';
                        options += "<option value='Select'>Select</option>\n";
                        for (i in response) {
                            options += "<option value='" + response[i].DataId + "'>" + response[i].County + "</option>\n";
                        }
                        //$('#DataId').html("<option value='Select'>Select-Y</option><option value='16'>Alameda-Y</option>");
                        $('#DataId').html(options);                 //This should work.  How to get the value of options into the string
                        alert("Statitical Areas(Y): " + options);
                        //$('#DataId').append(options);

                    }
                }).fail(function (error) {
                    alert("County Error:" + error.StatusText);
                });
        });
    });

    function AjaxCall(url, data, type) {
          return  $.ajax({
                 url:  url,
                 type:  type  ?  type  :  'GET',
                 data:  data,
                 contentType:  'application/json'
           });
    }  

1 个答案:

答案 0 :(得分:0)

而不是使用其他函数来调用$ .ajax,为什么不立即调用它。你所做的事情没有性能提升。如果要在继续执行较低条件之前等待响应,请尝试还原代码并添加异步属性。

我希望这会对你有所帮助