使用Jquery Ajax post函数的Webmethod错误

时间:2014-04-14 13:59:01

标签: jquery asp.net ajax

在asp.net 3.5网站中,我有一个位于ASPX页面的jquery,它应该在代码隐藏中执行一个函数。我使用了webmethod方法。

以下是错误: System.ArgumentException:未知的Web方法CloneItem。 参数名称:methodName

以下是相关代码:

ASPX页面与Jquery的相关部分:

<%@ Page Language="VB" MasterPageFile="~/Pages/MasterPage.master" Title="Planning" %>
<%@ Register TagPrefix="PWC" Namespace="PWC" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<PWC:Planning runat="server" SkinFileName="Core/Planning.ascx" ID="Planning" Secured="true"/>

     $("#dialog-form").dialog({
         autoOpen: false,
         height: 300,
         width: 350,
         modal: true,
         buttons: {
             "Create clone": function () {

                 var cloneItem = $('input[name=item]').is(":checked");                
                 var intID = $(this).data('intID');

                 var bValid = true;
                 bValid = bValid && checkSelections();

                 if (bValid) {

$.ajax(
       {
        type: 'POST',
        url: 'Planning.aspx/CloneItem',                                  
        data: "{'(intID': '" + $(this).data('intID') + "', 'item': '" + cloneItem + "'}" ,          
        dataType: 'json',
        contentType: 'application/json; charset=utf-8'
         // success: cloneOnSuccess,
        // error: cloneOnError
          });

      $(this).dialog("close");

Planning.aspx vb代码隐藏中的函数:

Imports System.Web
Imports System.Web.Services
<WebMethod(EnableSession:=True)> _ 
Public Shared Function CloneItem(intID As String, item As Boolean) As String

'execute a stored procedure here

Return "success!"
End Function

母版页包含以下scriptmanager:

  <AJAXToolkit:ToolkitScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeOut="600" EnablePartialRendering="true"  CombineScripts="false" ScriptMode="Release" EnablePageMethods="true" >
    </AJAXToolkit:ToolkitScriptManager>

对我做错了什么的任何想法?

1 个答案:

答案 0 :(得分:0)

有两件事可能是问题所在。首先,你需要在web.config中使用一些代码。

<system.web>
  <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule,System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpModules>
</system.web>

参见参考:Call ASP.NET PageMethod/WebMethod with jQuery - returns whole page

另一件事是您需要在发布此数据时在参数中使用JSON.stringify。

参见参考资料 - http://www.asp.net/ajaxlibrary/jquery_webforms_retrieve_data_from_pagemethod.ashx