无法使用jQuery ajax调用页面方法
本文关键字:调用 方法 ajax jQuery | 更新日期: 2023-09-27 17:49:41
我使用jQueryUI创建了一个可排序的ListView,现在我被困在试图将其保存回数据库中。下面是我创建ListView的方法:
<asp:ListView ID="ListViewItems" runat="server">
<LayoutTemplate>
<div id="sortable1" class="connectedSortable">
<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
</div>
</LayoutTemplate>
<ItemTemplate>
<li class="ui-state-default" id='id_<%# Eval("Item_ID") %>'><%# Eval("Item_Name") %></li>
</ItemTemplate>
在ListView下有一个按钮(div),点击后应该将重新排序的列表保存回db:
<div class="btn-info" id="UpdateOrder" onclick="SendUpdatedOrder()">Update Order</div>
文件内容:
function SendUpdatedOrder() {
var order = $('#sortable1').sortable('toArray').join(',').replace(/id_/gi, '');
//alert(order);
$.ajax({
type: "POST",
url: "~/AdminEditItems.aspx/UpdateRuleOrder",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
}
});}
我在adminedittitems .aspx.cs中创建了一个页面方法-
[WebMethod]
public static void UpdateRuleOrder(string order)
{
....do something...
}
在执行UpdateRuleOrder方法时根本没有被调用。我在JS的UpdateRuleOrder函数中的任何警报都被成功调用,但ajax方法不知何故不起作用。我不知道我哪里出错了。
三件事:
从你的url中删除波浪和正斜杠,即
url: "AdminEditItems.aspx/UpdateRuleOrder",
将你的论点添加到数据中,即
data: '{ "order" : "' + order + '"}',
您还需要在您的ScriptManager
中添加EnablePageMethods
,即
<asp:ScriptManager runat="server" EnablePageMethods="true">
我也注意到你没有返回任何东西,改变你的UpdateRuleOrder
方法来返回你的对象,你将能够像这样访问它:
var myObject = response.d;
由于它在上面的目录中,url将是:
url: "../AdminEditItems.aspx/UpdateRuleOrder",