调用asp.net页面方法从JavaScript不工作(Calling asp.net page m

2019-06-24 13:47发布

嗨,我从JavaScript调用一个简单的页面的方法,这是我的标记代码

 function OnCallSumComplete(result, userContext, methodName) {             
            alert(result);
 }
 function OnCallSumError(error, userContext, methodName) {
     if (error !== null) {
         alert(error.get_message());
     }
 }
 function test(){
     var contextArray = "";
     PageMethods.TestMethod("test parameter", OnCallSumComplete, OnCallSumError,  contextArray);
 }

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

在CS

 [System.Web.Services.WebMethod]
 public static string TestMethod(string para)
 {

    return "Yes this is working";
 }

警报显示结果和它说“空”。 我检查萤火虫,我没有看到错误的控制台。

如果我改变TestMethod的到

 [System.Web.Services.WebMethod]
 public static string TestMethod()
 {
    return "Yes this is working";
 }

而PageMethod的到

 PageMethods.TestMethod( function (response) { alert(response);  } );

它显示了正确答案为“是的,这是工作。” 但是,我需要的参数传递给函数。 我错过了什么?

感谢帮助。

Answer 1:

我认为你必须以具有通过JavaScript调用可用的ASMX方法使用[ScriptMethod]代替或补充[的WebMethod]。 为什么它可能没有考虑参数工作的原因是因为该请求没有为了处理方法来解析什么。

与[ScriptMethod(和你的类定义可能[ScriptService])尝试一下,看看是否有差别。



Answer 2:

我认为主要的问题是,你正在使用的ScriptManager大会。

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

要解决Webconfig您的问题用途 -

<pages>
  <controls>
    <add tagPrefix="ajax" 
         namespace="System.Web.UI" 
         assembly="System.Web.Extensions, 
                   Version=1.0.61025.0, 
                   Culture=neutral, 
                   PublicKeyToken=31bf3856ad364e35"/>
  </controls>
</pages>

而在.aspx页面使用以下行 -

<ajax:ScriptManager ID="ScriptManager1" 
                    EnablePageMethods="true" 
                    runat="server" />

希望这将帮助您解决您的问题。



Answer 3:

问题是,在你的web.config,你需要有一个模块(IHttpModule的)功能:ScriptModule-4.0。 这是默认启用的,但您可能已经删除了它。 寻找它在计算机范围Web.config文件,如果你是好奇,看它是否是从当地的Web.config文件中删除。 其声明应该system.webServer下/模块(IIS> = 7)和的System.Web /的HttpModules的Visual Studio的内置网络服务器或IIS <7。



Answer 4:

从我记得,你只需要在您的通话(你PARAM,和的onSuccess onFailure处)3个PARAMS。 你尝试使用PageMethods.TestMethod( “测试参数”,OnCallSumComplete,OnCallSumError);



文章来源: Calling asp.net page method from javascript not working