2016-03-25 20 views
-1

我有一个Ajax方法检查一些条件,如果条件失败,然后我通过警报框显示一条消息。但我需要在aspx页面上调用函数来完成其他部分。如何从.js文件的代码文件后面调用函数/方法?

我的示例代码:

function myWebService(param1, param2, param3) { 
    $.ajax({ 
     type: "POST", 
     url: "/WebServices/WebServiceMethod", 
     data: JSON.stringify({ param1: param1, param2: param2, param3: param3 }), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     async: true, 
     success: function (msg) { 
      if (msg.d) { 
       var obj = function callbackfunction() { 
        myWebService(param1, param2, param3); 
       } 

       window.setTimeout(obj, 10000); 
      } 
     else { 
        alert("WebMethod checked the condition and it was failed."); 
        // I need to call method in code behind file from here. 
       } 
      } 
     } 

     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      alert("error"); 
     } 
    }); 
} 

我试图通过另一种的WebMethod和Ajax调用来实现,但问题是我打电话以上来自5次不同的页面为MyWebService方法,我需要调用代码 - (所有aspx页面都具有SAME名称的功能,但内部代码与每个页面不同)。在这种情况下,我不知道如何设置网址。

有没有更好的方法可以从上面的函数调用代码隐藏文件中的方法?

+0

我认为你的问题就是生成动态的URL,然后打个电话。 –

+0

你可以使用__doPostBack(); – Ripun

+0

不知何故,我需要生成动态网址。你能帮我怎么做吗? @Reddy – Knowledge2Share

回答

2

您可以使用System.Web.Services.WebMethod来允许jQuery调用服务器端ASP.NET方法(不使用PostBack)。这article有一个很好的步骤指南。

基本上你需要的属性添加到您的静态代码隐藏方法:

[WebMethod] 
public static String MyMethod() 
{ 
    return "My Method from code-behind" 
} 

而且在你的javascript:

function myWebService(param1, param2, param3) { 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/MyMethod", // will make AJAX call to your code-behind code 
     // rest of you code... 
    }); 
} 
+0

但是我的网址对于每个页面都会有所不同。我需要调用相同的方法(内部代码可能不同),它通过Web服务或其他方式存在于5-6页 – Knowledge2Share

相关问题