【问题标题】:Ajax Call WebPage Method doesn't workAjax 调用网页方法不起作用
【发布时间】:2023-03-25 15:15:01
【问题描述】:

我愿意

<script type="text/javascript"  src="Scripts/jquery-1.4.1.min.js"></script>

<script type="text/javascript">
    function CallPageMethod(methodName, onSuccess, onFail) {
        var args = '';
        var l = arguments.length;
        if (l > 3) {
            for (var i = 3; i < l - 1; i += 2) {
                if (args.length != 0) args += ',';
                args += '"' + arguments[i] + '":"' + arguments[i + 1] + '"';
            }
        }
        var loc = window.location.href;
        loc = (loc.substr(loc.length - 1, 1) == "/") ? loc + "Report.aspx" : loc;
        $.ajax({
            type: "POST",
            url: loc + "/" + methodName,
            data: "{" + args + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: onSuccess,
            fail: onFail
        });
    }

    function success(response) {
        alert(response.d);
    }

    function fail(response) {
        alert("&#1054;&#1096;&#1080;&#1073;&#1082;&#1072;.");
    }

    function select() {

        ...........

        CallPageMethod("SelectBook", success, fail, ...........);
    }
</script>

我的脚本管理器是

<asp:ScriptManager ID="ScriptManager1" 
EnableScriptGlobalization="true" 
EnableScriptLocalization="true"
EnablePageMethods="true" 
EnablePartialRendering="true" runat="server" />

但是当我执行 select 函数时,我什么也没得到……根本没有消息。

错误日志:

    [ArgumentException]: Unknown web method SelectBook.
Parameter name: methodName
   at System.Web.Script.Services.WebServiceData.GetMethodData(String methodName)
   at System.Web.Handlers.ScriptModule.OnPostAcquireRequestState(Object sender, EventArgs eventArgs)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

还有我的网络方法:

<WebMethod()> Public Function SelectBook(ByVal values As String, ByVal valuesG As String, ByVal valuesX As String, ByVal valuesXG As String) As String
    '....
    Return If(((vals.Length = valsG.Length) And (valsX.Length = valsXG.Length)), SQLModule.UpdateAdvCode(vals, valsG, valsX, valsXG), "Ошибка чтения диспетчерских кодов")
End Function

如果我只做 alert(CallPageMethod("SelectBook", success, fail, .........) ) 我可以看到 "undefined" ,但是什么 undefined ???我试图调试这个 javascript 但无法修复它。它工作了,我理解它必须如何工作,但我只是不知道为什么它现在坏了以及如何修复它。请帮帮我。

更多信息

    Server  ASP.NET Development Server/10.0.0.0
Date    Thu, 03 Feb 2011 11:30:51 GMT
X-AspNet-Version    4.0.30319
Cache-Control   private
Content-Type    text/html; charset=utf-8
Content-Length  3517
Connection  Close

为什么要关闭?

【问题讨论】:

    标签: javascript .net jquery asp.net


    【解决方案1】:

    我花了很多时间来找到正确的答案,但在任何网站上都找不到。这是一个非常非常简单的答案:它取决于开发模式下的参数位置和互联网上的发布模式。在开发模式下,你的 URL 是这样的 http://localhost:portnumber/yournamesite/pagesite/parameter 并且你的参数的位置位于 url 的 4 个位置,当你的网站在 iis 上发布到互联网上时,你的 URL 变成了这样的 http: // yoursite.com/pagesite/parameter 您的参数的位置在第 3 位。;) 请原谅我的英语不好 ;)

    【讨论】:

      【解决方案2】:

      问题解决了......

      <WebMethod()> Public SHARED Function SelectBook(ByVal values As String, ByVal valuesG As String, ByVal valuesX As String, ByVal valuesXG As String) As String
          '....
          Return If(((vals.Length = valsG.Length) And (valsX.Length = valsXG.Length)), SQLModule.UpdateAdvCode(vals, valsG, valsX, valsXG), "Ошибка чтения диспетчерских кодов")
      End Function
      

      我花了2天时间才看到它必须共享>_

      【讨论】:

        【解决方案3】:

        你检查过配置文件,模块注册了吗

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

        【讨论】:

        • 顺便说一句:我找不到带反射器的模块。
        【解决方案4】:

        我对 $.ajax 也有同样的问题,不知道为什么,但我现在正在为我的 XMLHTTPRequests 使用 $.get() 或 $.getJSON()。似乎比使用 $.ajax() 函数更快。

        【讨论】:

        • 与 $.get() 或 $.getJSON() 相同 :(
        猜你喜欢
        • 1970-01-01
        • 2017-09-29
        • 1970-01-01
        • 1970-01-01
        • 2012-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-31
        相关资源
        最近更新 更多