Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 从webmethod访问ASP控件_Jquery_Asp.net_Ajax_Vb.net - Fatal编程技术网

Jquery 从webmethod访问ASP控件

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函数以将标签文本

我继承了一些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函数以将标签文本设置为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
    }
});
}