Jquery 从webmethod访问ASP控件
我继承了一些ASP 2.0 webforms代码,它查询webmethod并返回一个字符串,这是它的简化版本 代码隐藏Jquery 从webmethod访问ASP控件,jquery,asp.net,ajax,vb.net,Jquery,Asp.net,Ajax,Vb.net,我继承了一些ASP 2.0 webforms代码,它查询webmethod并返回一个字符串,这是它的简化版本 代码隐藏 <System.Web.Services.WebMethod()> _ Public Function StockLevel() as String return "120" End Sub 页面上有一个asp标签控件,例如asp:label id=“stockLabel”runat=“server” 当前,当我试图修改StockLevel函数以将标签文本
<System.Web.Services.WebMethod()> _
Public Function StockLevel() as String
return "120"
End Sub
页面上有一个asp标签控件,例如asp:label id=“stockLabel”runat=“server”
当前,当我试图修改StockLevel函数以将标签文本设置为120时,它会将字符串120返回到jquery调用中并显示警报,例如
stockLabel.Text = "120"
我得到了intellisense,但它似乎没有更新页面上的值,我想这是由于AJAX的性质(在这种情况下,我应该使用AJAX调用的返回值来设置标签的值),并且此时可能没有加载控件,或者存在范围问题。这是正确的吗?我想知道为什么会发生这种情况,这是我应该期望的正确行为,还是我做错了什么,标签应该用正确的值更新
任何指针或建议都很好。我相信ASP标签会呈现为跨距,您应该可以这样更改:
success: function (data) {
$("#<%=stockLabel.ClientID %>").text(data);
}
成功:函数(数据){
$(“#”)文本(数据);
}
就从web方法访问页面控件而言,您是不允许的。这篇文章比我能做的要好得多:当你通过AJAX调用webmethod时,你不能这样做 如果您通过AJAX进行调用,则无法访问web表单控件,因为您实际上并没有请求页面,您只是在调用该方法 相反,您应该使用jQuery查找标签,并通过Javascript进行更新:
function GetStockLevel() {
$.ajax({
type: 'POST',
url: 'Stock.aspx/StockLevel',
// data: '{ }',
contentType: 'application/json; charset=utf-8',
dataType: 'text',
success: function (data) {
$("#<%=stockLabel.ClientID %>").text(data); // this only works if the javascript is in your .aspx-file
}
});
}
函数GetStockLevel(){
$.ajax({
键入:“POST”,
url:'Stock.aspx/StockLevel',
//数据:“{}”,
contentType:'application/json;charset=utf-8',
数据类型:“文本”,
成功:功能(数据){
$(“#”).text(data);//这仅在.aspx文件中包含javascript时有效
}
});
}
如果脚本不在.aspx中,则需要找到在客户端上查找节点的另一种方法(例如使用特定类)。这是C#,但是.Net 2非常容易转换。对于1个变量来说,这也太过分了,但是如果您有更多的控件或者需要定期引用JS中的.Net控件,我建议您这样做。。。谢谢,这证实了我的怀疑。我将通过jquery设置标签范围。
function GetStockLevel() {
$.ajax({
type: 'POST',
url: 'Stock.aspx/StockLevel',
// data: '{ }',
contentType: 'application/json; charset=utf-8',
dataType: 'text',
success: function (data) {
$("#<%=stockLabel.ClientID %>").text(data); // this only works if the javascript is in your .aspx-file
}
});
}