Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 直接从AJAX调用代码隐藏函数而无需页面加载_Javascript_Jquery_Asp.net_Ajax_Dotnetnuke - Fatal编程技术网

Javascript 直接从AJAX调用代码隐藏函数而无需页面加载

Javascript 直接从AJAX调用代码隐藏函数而无需页面加载,javascript,jquery,asp.net,ajax,dotnetnuke,Javascript,Jquery,Asp.net,Ajax,Dotnetnuke,我试图直接调用代码隐藏函数。目前,我能够从我的ajax.aspx.vb的PageLoad事件调用该函数,并且我通过我的变量传递响应,该变量位于ajax.aspx上。这个很好用。但是,我不想经历PageLoad事件,而是直接针对函数,而不必将数据放入。可能吗 我使用的是DotNetNuke,其中所有功能都来自ascx控件。 因此,在我的ascx控件中,我将ajax设置为: <script type = "text/javascript"> function JSFunction

我试图直接调用代码隐藏函数。目前,我能够从我的ajax.aspx.vb的PageLoad事件调用该函数,并且我通过我的变量传递响应,该变量位于ajax.aspx
上。这个很好用。但是,我不想经历PageLoad事件,而是直接针对函数,而不必将数据放入
。可能吗

我使用的是DotNetNuke,其中所有功能都来自ascx控件。 因此,在我的
ascx
控件中,我将ajax设置为:

<script type = "text/javascript">
    function JSFunction() {
        var xx = 1;
            $.ajax({
                type: "POST",
                url: "/top3/DesktopModules/top3all/ajax.aspx/GetTestData",
                data: { 'sPageIndex': xx},
            }).done(function (response) {
             OnSuccessTest(response);
            });
    }
    function OnSuccessTest(response) {
        document.getElementById("<%= lblTest.ClientID%>").innerHTML = response;
}
</script>

函数JSFunction(){
var xx=1;
$.ajax({
类型:“POST”,
url:“/top3/DesktopModules/top3all/ajax.aspx/GetTestData”,
数据:{'sPageIndex':xx},
}).完成(功能(响应){
OnSuccessTest(响应);
});
}
函数OnSuccessTest(响应){
document.getElementById(“”).innerHTML=response;
}
在my ajax.aspx.vb中:

 Protected m_result As String = ""

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim sModuleIDReferrer As String
        If Not HttpContext.Current.Request.UrlReferrer Is Nothing Then
            strUrl = HttpContext.Current.Request.UrlReferrer.ToString

            Dim sPageIndex As Integer
            If Integer.TryParse(Request("sPageIndex"), sPageIndex) Then

                GetTestData(sPageIndex)
            End If
          End If
    End Sub

 <System.Web.Services.WebMethod()> _
 Public Shared Function GetTestData(ByVal name As Integer) As String
        m_result = "some test"
        Return m_result
    End Function
受保护的m_结果为String=“”
受保护的子页加载(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
Dim SMODULEIDREFERER作为字符串
如果不是HttpContext.Current.Request.UrlReferer,则为Nothing
strUrl=HttpContext.Current.Request.urlReferer.ToString
作为整数的Dim sPageIndex
如果Integer.TryParse(请求(“sPageIndex”),sPageIndex),则
GetTestData(sPageIndex)
如果结束
如果结束
端接头
_
公共共享函数GetTestData(ByVal名称为整数)作为字符串
m_result=“一些测试”
返回m_结果
端函数
在my ajax.aspx中:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="ajax.aspx.vb" Inherits="Christoc.Modules.top3all.ajax" %>
<%= m_result %>

相信这就是你所需要的--

在aspx页面中,添加ScriptManager控件,并将其EnablePageMethods属性设置为True

<asp:ScriptManager runat="server" ID="MySM" runat="server" EnablePageMethods="True" />

修改codebehind中的方法声明,如下所示:

<System.Web.Services.WebMethod()> _
 Public Shared Function GetTestData(ByVal name As Integer) As String
        m_result = "some test"
        Return m_result
 End Function
_
公共共享函数GetTestData(ByVal名称为整数)作为字符串
m_result=“一些测试”
返回m_结果
端函数

相信这就是你所需要的--

在aspx页面中,添加ScriptManager控件,并将其EnablePageMethods属性设置为True

<asp:ScriptManager runat="server" ID="MySM" runat="server" EnablePageMethods="True" />

修改codebehind中的方法声明,如下所示:

<System.Web.Services.WebMethod()> _
 Public Shared Function GetTestData(ByVal name As Integer) As String
        m_result = "some test"
        Return m_result
 End Function
_
公共共享函数GetTestData(ByVal名称为整数)作为字符串
m_result=“一些测试”
返回m_结果
端函数
正如@David所说,在添加
之后,您可以尝试将JS更改为使用PageMethods,在那里您可以找到所有需要的内容

希望这有助于

在添加了@David所说的
之后,您可以尝试将JS更改为使用PageMethods,在那里您可以找到所有需要的内容



希望这有帮助

我认为您需要将要调用的方法声明为WebMethod,并且我认为您需要将其声明为static…就像@DavidW所说的,您可能应该创建一个WebMethod。看这个。在VB中,静态方法被称为shared。我认为您需要将要调用的方法声明为WebMethod,我认为您需要将其声明为静态的……就像@DavidW所说的,您可能应该创建一个WebMethod。看这个。在VB中,静态方法被称为shared。我认为您需要将要调用的方法声明为WebMethod,我认为您需要将其声明为静态的……就像@DavidW所说的,您可能应该创建一个WebMethod。看这个。在VB中,静态方法称为SharedI。我已经尝试过了,但是它仍然会通过PageLoad,因为我没有在PageLoad中填充m_结果,所以它不会返回任何结果。你的表单上有ScriptManager控件吗?如果没有,添加一个,并设置EnablePageMethods=True(为了完整起见,只需编辑ansewr以包含此项)。ooh另一项-在调用函数时,调用参数“sPageIndex”,但正式参数名称为“name”。我认为这些必须与方法签名匹配。我无法添加ScriptManager,因为它已经有对内置脚本管理器的引用。在内置脚本管理器上,我无法设置EnablePageMethods=TrueBuildIn脚本管理器?你能再详细一点吗?是在母版页还是类似的东西里?我想这不是标准的ASP脚本管理器?如果是这样,这可能是你的问题的一个因素。如果您发布了部分或全部aspx标记,可能会对这个问题有所帮助。我已经尝试过了,但它仍然会通过页面加载,因为我没有在页面加载中填充m_结果,所以它不会返回任何结果。您的表单上有ScriptManager控件吗?如果没有,添加一个,并设置EnablePageMethods=True(为了完整起见,只需编辑ansewr以包含此项)。ooh另一项-在调用函数时,调用参数“sPageIndex”,但正式参数名称为“name”。我认为这些必须与方法签名匹配。我无法添加ScriptManager,因为它已经有对内置脚本管理器的引用。在内置脚本管理器上,我无法设置EnablePageMethods=TrueBuildIn脚本管理器?你能再详细一点吗?是在母版页还是类似的东西里?我想这不是标准的ASP脚本管理器?如果是这样,这可能是你的问题的一个因素。如果您发布了部分或全部aspx标记,可能会对这个问题有所帮助。我已经尝试过了,但它仍然会通过页面加载,因为我没有在页面加载中填充m_结果,所以它不会返回任何结果。您的表单上有ScriptManager控件吗?如果没有,添加一个,并设置EnablePageMethods=True(为了完整起见,只需编辑ansewr以包含此项)。ooh另一项-在调用函数时,调用参数“sPageIndex”,但正式参数名称为“name”。我认为它们必须与方法签名匹配。我无法添加ScriptManager,因为它已经有对内置scrip的引用