2011-03-09 62 views
0

我有一个棘手的问题。我处于需要使用JavaScript函数中.cs文件中定义的方法的情况。问题是我们正在使用.NET 1.1,AJAX不能用于应用程序。从Javascript使用服务器端方法没有AJAX

此外,我将需要从JavaScript传递一个字符串到服务器端的方法。我正在实现JavaScript的页面是.as任何想法?

我已经尝试做一个回发并创建一个RaisePostBack事件处理程序方法(在.aspx页面和.ascx用户控件中),但没有运气。

如果有人能帮我解决问题,我们将不胜感激。

更确切地说,我有一个类Attachment.cs,它有一个方法Delete()。

javascript是从span的onclick事件中调用的。 javascript函数的输入参数将是一个字符串,我需要用它来实例化一个附件。

我创建了一个方法,它使用一个字符串实例化一个附件并为附件对象调用相应的Delete()方法。

现在,我需要将字符串从javascript函数传递给我创建的方法。我无法使用PageMethods。

JavaScript函数是这样的: //文件ID是一个字符串

function DeleteAtt(fileID) 
{ 
    //I tried PageMethods here, tried posting the page and getting the value through 
    // a RaisePostBack event etc. No luck. 
} 

我创建的CS方法是这样的:

public void DeleteAttachment(string ID) 
{ 
    Attachment obj = new Attachment(ID); 
    obj.Delete(); 
} 
+1

Ajax是“无需离开页面即可从JS发出HTTP请求”的全部术语。除非离开页面是一个选项,否则听起来好像你在问Ajax如何做而不做Ajax。 – Quentin 2011-03-09 16:18:45

+0

@David。究竟。 PageMethods的另一种选择是更精确。 – 2011-03-09 16:33:16

回答

1

你的意思是说微软的“ASP AJAX”不是一个选项,还是你的意思是说任何jquery /任何其他库,或者你自己亲手写的javascript ajax都不行?您的.net版本可能不支持ASP AJAX,但肯定简单的JavaScript仍然可以工作,,因为您想从javascript访问该页面。

如果是这样的话,事情如此简单,使用jQuery,将工作:

function submit() { 
    $.post(
     "pagename.aspx?string=" + variable, 
     function (data) { 
      alert("Response: " + data); 
    }); 
} 
+0

@Michael。 AJAX不是一种选择。在使用AJAX和更高版本的.NET之前,出现了一些问题。 – 2011-03-09 16:29:55

+0

你能解释一下吗? Ajax不是一种不同的语言 - ajax只是实现纯javascript的一种方式。在什么情况下你可以使用javascript来发出请求,但是不能使用javascript来创建一个异步调用? – 2011-03-09 16:34:44

+0

@Michael。我非常理解,AJAX不是一种不同的语言,我之前使用过它。我正在从事的应用是从2005年开始生产(很久以前..)。我现在所做的就像是一种支持。从事该项目的团队尝试在应用程序上实现一些AJAX,并遇到一些其他功能无法正常工作的问题。所以这就是我被告知的:“NO AJAX ..” – 2011-03-09 16:44:53

0

你可以注入一个隐藏式iFrame进入页面, iframe的SRC可用于将数据传回服务器。

这是jQuery和Prototype发明之前的一种非常古老的技术。

参见:http://www.ashleyit.com/rs/其他替代方案。

1

如何将一个回调URL作为查询字符串,你需要把数据提交网址?例如:

初始页:(JavaScript的)

function send(){ 
    window.location = "submiturl.aspx?str=var& 
         callbackurl=http://www.myurl.com/page.aspx"; 
} 

submiturl。ASPX然后抓住这两个查询字符串[str][callbackurl],执行动作/函数,然后发送一个响应返回给[callbackurl]

response.redirect(callbackurl + "?response=" + data); 

初始页面现在使用response.querystring,以确定它是否是成功的/你想和任何其他继续商业。

这绝对不会使用ajax,并且绝不会是异步的,而是基于API /回调设计的相当漫长的历史记录。

相关问题