Невозможно вызвать веб-сервис 2 раза от jQuery - PullRequest
1 голос
/ 17 сентября 2011

Я не могу вызвать веб-сервис 2 раза из кода функции jQuery здесь.

Страница:

<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script type="text/javascript">
function getCityByPinCode() {
        var path = '<%=ConfigurationManager.AppSettings["AutoComplete"].ToString() %>';
        $.ajax({
            type: "POST",
            url: "" + path + "/CityBasedOnPinCode",
            data: "{pincode: '" + $("#<%=ntxbPostCode.ClientID%>").val() + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            error: OnError
        });
    }
    function OnSuccess(data, status) {
        var city = document.getElementById('<%= tbxCity.ClientID %>');
        var val1 = data.d;
        document.getElementById("ContentPlaceHolder1_CompanyDetails1_tbxCity").value = val1;
    }

    function OnError(request, status, error) {
        alert(request.statusText);
    }
</script>
</telerik:RadCodeBlock>
<body>
 <telerik:RadNumericTextBox ID="ntxbPostCode" runat="server" DataType="System.Int32"
    MaxLength="4" TabIndex="4" Width="95%" DecimalDigits="0" ClientEvents-OnValueChanged="getCityByPinCode()">
 </telerik:RadNumericTextBox>

 <asp:TextBox ID="tbxCity" runat="server" Width="95%" TabIndex="5"></asp:TextBox>
</body>

Веб-сервис:

public string CityBasedOnPinCode(string pincode)
{
    int pcode = 0;
    int.TryParse(pincode, out pcode);
    List<usp_CityBasedOnPinCodeResult> lstCity = new CityDA().CityBasedOnPincode(pcode);
    return lstCity[0].CityName.ToString();
}

Я хочучтобы заполнить текстовое поле города на основе введенного пин-кода. Так, когда пользователь вводит пин-код, он / она автоматически получает название города. Когда я устанавливаю значение пин-кода заранее, оно дает мне идеальный результат, но когда я ввожу новое значение, я получаю ошибку следующим образом

Ошибка времени выполнения Microsoft JScript: ожидается объект.

Обратите внимание, что если у меня есть значение пин-кода в текстовом поле во время загрузки страницы (время редактирования), тогда я получаю правильное значение,не получить значение после изменения значения текстового поля.JQuery включен в мастер-страницу.поэтому сюда не включается.

1 Ответ

0 голосов
/ 19 сентября 2011

Поскольку вы подписываетесь на событие на стороне клиента, предлагаемое RadNumericTextBox, может быть проще использовать аргументы события в вашем коде, чем использовать селектор для получения значения. Вы можете увидеть пример того, как получить новое значение из события OnValueChanged прямо здесь .

Наряду с этим, когда я изменил код на следующий, все отлично работало на моем конце:

<script type="text/javascript">
    function getCityByPinCode(sender, eventArgs) {
        //do stuff
    }
</script>

<telerik:RadNumericTextBox ID="ntxbPostCode" runat="server" DataType="System.Int32"
    MaxLength="4" TabIndex="4" Width="95%" DecimalDigits="0" ClientEvents-OnValueChanged="getCityByPinCode">
</telerik:RadNumericTextBox>
<br />
<asp:TextBox ID="tbxCity" runat="server" Width="95%" TabIndex="5"></asp:TextBox>

Это предотвратило запуск события при начальной загрузке страницы (что было с вашим кодом), а также гарантировало, что мне удалось получить новое значение RadNumericTextBox с помощью функции get_newValue () .

Небольшое примечание: вы должны иметь возможность просто использовать переменную city в функции OnSuccess, чтобы установить ее значение, в отличие от повторного вызова getElementbyID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...