gpt4 book ai didi

javascript - 我可以在不引起回发的情况下使用 javascript 调用服务器端方法吗?

转载 作者:行者123 更新时间:2023-11-30 08:12:49 24 4
gpt4 key购买 nike

我有调用 ASP.NET 中方法的 JavaScript 代码。基本上,我有一个连接到 GridViewSqlDataSource,我想更改 DataSourceSelectCommand 而无需导致回发。

现在,我正在使用 __dopostback 方法,但正如我所说,我不想重新加载页面。我只想更新 GridView。这可能吗?

最佳答案

这不是完成的方式。有很多方法可以做到这一点,但最简单的方法是将您的内容包含在 UpdatePanel 中并在您的页面上放置一个 ScriptManager。

例如:

<asp:ScriptManager id="mymanager" runat="server" />

<asp:UpdatePanel id="mainPanel" runat="server">
<ContentTemplate>

<! -- Put your content here -->

</ContentTemplate>
</asp:UpdatePanel>

现在您页面上的所有交互都将通过 Ajax 完成。

更好的方法(我目前使用的方法)

使用 jQuery 结合 Web 服务进行 Ajax 调用。

示例代码:

[System.Web.Script.Services.ScriptService]
public class MyWebService: System.Web.Services.WebService
{
[WebMethod]
public List<BusinessObject> GetSomeData(int dataID)
{
//Invoke your business layer and get some data here
List<BusinessObject> result = BusinessLayer.GetSomeData();
return result;
}
}

在客户端使用 jQuery,你可以做这样的事情:

$.ajax({
type: "POST",
dataType: 'json',
contentType: "application/json; charset=utf-8",
url: "MyWebService.svc/GetSomeData",
data: {'dataId': you_id_here },
success: function(result) {
//result.d will contain an array of BusinessObject in JSON format
//You can iterate through this list and populate your html using this data.
//You can either use jQuery templates
//or one of the many jQuery plugins for tabular data.
//I use datatables:
//http://datatables.net/
for(int i=0;i<result.d.length; i++)
{
//do something here if you want to iterate one by one constructing your
//html
}
},
error: function(xhr, ajaxOptions, thrownError) {
//display error here
});
}
});

我强烈建议查看这些链接:

  1. > http://encosia.com/using-jquery-to-consume-aspnet-json-web-services/
  2. > http://encosia.com/simplify-calling-asp-net-ajax-services-from-jquery/

关于javascript - 我可以在不引起回发的情况下使用 javascript 调用服务器端方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001382/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com