Javascript ASP.NET中的AJAX问题&;C#
我试图通过Javascript ASP.NET中的AJAX问题&;C#,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,我试图通过AJAX在我的C#code-behind中调用WebMethod。。我有一个引导模式,需要在点击链接按钮时显示,而且当按下链接按钮时,它将通过AJAX触发一个WebMethod,用查询的结果集填充模式体中的一个表 这是我的代码: ASP.NET <asp:LinkButton href="#viewemydevices" data-toggle="modal" ID="ViewMyDevices" runat="server"> <div class="panel-f
AJAX
在我的C#code-behind中调用WebMethod
。。我有一个引导模式,需要在点击链接按钮时显示,而且当按下链接按钮时,它将通过AJAX
触发一个WebMethod,用查询的结果集填充模式体中的一个表
这是我的代码:
ASP.NET
<asp:LinkButton href="#viewemydevices" data-toggle="modal" ID="ViewMyDevices" runat="server">
<div class="panel-footer announcement-bottom">
<div class="row">
<div class="col-xs-6">
View Devices
</div>
<div class="col-xs-6 text-right">
<i class="fa fa-arrow-circle-right"></i>
</div>
</div>
我不知道我遗漏了什么,模态正在显示,但没有数据显示。所以我认为AJAX没有被解雇
有什么建议吗?基于代码的粗略外观,需要做一些额外的工作才能使这项工作顺利进行。我可以看到所需的步骤如下:
- 向链接按钮添加'clientmode=“static”'属性
- 为modal body div提供ID:
- ajax请求需要绑定到按钮。在原始代码示例中,情况正好相反——ajax响应是通过单击按钮执行的
- 从服务器接收到响应后,需要将响应中的HTML内容写入模式对话框内容占位符,如下所示:“$(“#myContent”).HTML(数据);”。请参见下面完整的JS示例:
$('#ViewMyDevices').click( function(){ $.ajax({ url: 'Default.aspx?method=ViewMyDevices', type: "POST", data: '{}', contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { $('#myContent').html(data); } }) });
- 该方法不会自动为您调用,因为您似乎使用的是ASP.NET,而不是MVC。你需要把逻辑连接起来,自己来称呼它。例如,您可以使用如下参数执行ajax请求:“Default.aspx?method=ViewMyDevices”。然后在aspx页面的页面加载事件中,您需要检查请求是否为post类型,并且查询参数是否与方法名称匹配。大概是这样的:
public void Page_Load(object sender, EventArgs e) { if(Request.HttpMethod == "POST" && Request.QueryString["method"] == "ViewMyDevices") { ViewMyDevices(); } }
- 然后,您需要覆盖aspx页面的呈现方法,并检测是否发出POST请求,在这种情况下,只呈现页面的所需部分,即表:
protected override void Render(HtmlTextWriter writer) { if(Request.HttpMethod == "POST") { MyDevicesTable.Render(writer); return; } base.Render(writer); }
我相信,这应该对你有用 您可以通过查看浏览器中的开发人员工具来判断是否启动了ajax。例如,对于Firefox,只需右键单击并选择“Inspect Element”,单击“Network”,您就可以查看对服务器的任何调用。Internet Explorer和Google Chrome都有一个类似的工具。没错,它没有被解雇。我可以确认。我注意到您的链接按钮中有一个额外的“e”:
href=“#viewemydevices”
这就是问题所在吗?web方法不应该是静态的吗?如果你想用这些数据来填充表格,它应该会返回一些东西。你能标记我的代码来显示你的建议吗@jjczopek
$('#ViewMyDevices').click(
function(){
$.ajax({
url: 'Default.aspx?method=ViewMyDevices',
type: "POST",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$('#myContent').html(data);
}
})
});
public void Page_Load(object sender, EventArgs e)
{
if(Request.HttpMethod == "POST" && Request.QueryString["method"] == "ViewMyDevices")
{
ViewMyDevices();
}
}
protected override void Render(HtmlTextWriter writer)
{
if(Request.HttpMethod == "POST")
{
MyDevicesTable.Render(writer);
return;
}
base.Render(writer);
}