1

我有表单布局,我根据城市 ID 加载城市名称、州和国家等城市详细信息,并通过 JSON 返回。

相同的功能如下:

public JsonResult GetCityDetails(int city_id)
    {
        var result = "SELECT (CITY_NAME + ', ' + STATE_NAME + ', ' + COUNTRY_NAME) AS CITY_NAME FROM COUNTRY_MASTER cm, STATE_MASTER sm, CITY_MASTER cy where cy.STATE_ID = sm.STATE_ID AND sm.COUNTRY_ID = cm.COUNTRY_ID AND cy.CITY_ID =" + city_id + " ";
        var tempPerson = DatabaseHelper.Instance.Database.QuerySingle(result);
        return Json(new { Data = tempPerson.CITY_NAME });
    }

在这里,我获得了通过 JSON 返回的城市详细信息的正确数据,但在加载到 html 表单字段时出现问题。

但是,此函数在 java 脚本函数中调用如下:

loadCityDetails: function (_cityid) {
           debugger;
            console.log("loadCityDetails");
            $.ajax({
                url: '@Url.Action("GetCityDetails", "Yogya")' + '?address_id=' + currentAddressID + '&person_id=' + currentPersonID + '&city_id=' +_cityid,
                type: 'POST',
                success: function (data) {
                 alert('Address Selected');                      
                   $("#CITY_DETAIL_AC").val(data.Data);

                }
            });
        },

现在,问题是如果我不保持警觉('Address Selected'); loadCityDetails 中的代码,我没有将城市详细信息加载到城市名称字段中,只有在提供警报时才会出现。但我不想保持这种警惕。那么,如何在不显示警报的情况下加载城市详细信息。任何帮助将不胜感激。

4

1 回答 1

0

这是因为调用$("#CITY_DETAIL_AC").val(data.Data);发生在异步 ajax 调用中,该调用独立于 DOM 构造运行。在函数调用返回时,您无法知道 DOM 是否已准备就绪 - 可能不是,因为您无法访问该元素。显示警告框让系统有时间在尝试写入 DOM 之前创建它。

解决方案:将包含ajax调用的函数放在.ready()中,像这样:

$(document).ready(function(){..your function body here...});

然后保证在所有元素都存在之前不会发生。现在您必须从 {...function body...} 中检索 city-id,因为您不能再期望它作为参数传入。

于 2012-09-10T13:24:31.100 回答