无法使用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方法不知何故不起作用。我不知道我哪里出错了。

无法使用jQuery 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",