从javascript调用 asp.net 页面方法不起作用
本文关键字:方法 不起作用 net javascript 调用 asp | 更新日期: 2023-09-27 18:34:41
嗨,我正在从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";
}
警报显示结果,并显示"null"。我检查了火虫,但没有看到控制台的错误。
如果我将测试方法更改为
[System.Web.Services.WebMethod]
public static string TestMethod()
{
return "Yes this is working";
}
和页面方法
PageMethods.TestMethod( function (response) { alert(response); } );
它将正确的响应显示为"是的,这正在工作"。但是,我需要将参数传递给函数。我错过了什么吗?
感谢您的帮助。
我认为主要问题在于您用于脚本管理器的程序集。
<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" />
希望这能帮助您解决问题。
我认为你必须使用[ScriptMethod]而不是[WebMethod],以便通过javascript调用获得asmx方法。 它可能在不采用参数的情况下工作的原因是,请求不必解析任何内容即可处理该方法。
尝试使用[ScriptMethod](可能还有类定义中的[ScriptService](,看看这是否有区别。
问题是在你的Web.config上,你需要启用一个模块(IHttpModule(:ScriptModule-4.0。默认情况下启用此功能,但您可能已将其删除。如果您好奇,请在计算机范围的 Web.config 文件中查找它,并查看它是否已从本地 Web.config 中删除。它的声明应该在system.webServer/modules(对于IIS>= 7(和system.web/httpModules下,对于Visual Studio的内置Web服务器或IIS <7。
据我所知,您的调用中只需要 3 个参数(您的参数、成功和失败(。 你试过使用PageMethods.TestMethod("test parameter", OnCallSumComplete, OnCallSumError(;