我无法从jQuery函数代码第二次调用Web服务。
页:
<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();
}
我想在输入密码的基础上填写城市文本框。所以当用户输入密码时,他/她会自动获取城市名称。当我把pincode的值预定义时,它给了我完美的结果但是当我输入新值时我得到的错误如下
Microsoft JScript运行时错误:预期的对象。
请注意,如果我在页面加载时间(编辑时间)中有文本框中的密码值,那么我在获取文本框的值后得到正确的值但没有获得值。 jQuery包含在母版页中。所以不包括在内。
答案 0 :(得分:0)
由于您订阅了RadNumericTextBox提供的客户端事件,因此在代码中使用事件参数可能更容易,而不是使用选择器来获取值。您可以看到如何从OnValueChanged事件right here获取新值的示例。
除此之外,当我将代码更改为以下内容时,我的一切工作正常:
<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>
这阻止了事件在初始页面加载时触发(与代码一起),并且还确保我设法使用 get_newValue()函数获取RadNumericTextBox的新值。 / p>
小注意:您应该能够在OnSuccess函数中使用city变量来设置其值,而不是再次调用getElementbyID。