2010-05-25 59 views
0

我以前曾问过这个问题,但没有得到正确答案。实现JavaScript ASP.NET C#的简单场景,提问的问题

所以,这是一个简单的事情:

textbox.text='user typing'; 

按钮:保存价值的变量和数据库。

很简单,没有什么。 但是不应该发回帖子,也就是说不能再次加载页面。

试试Ajax?我试过了,但它不起作用。

我失去了很多时间试图使用JavaScript Ajax实现这一点,并阅读了许多帖子。

但由于某种原因,我无法正确实现功能。

+3

如果你提供了一些代码,显示你已经尝试过,你可能会有更多的运气得到答案。如果可能的话,考虑显示相关的html,你的ajax调用,以及你的ajax方法调用的任何资源(例如,如果你调用web方法,web方法)。如果您以前从未这样做过,我强烈建议访问Encosia,特别是文章[使用jQuery直接调用ASP.NET AJAX页面方法](http://encosia.com/2008/05/29/using-jquery-对直接叩ASPNET-AJAX页面的方法/)。 – 2010-05-25 20:43:46

+0

也可以添加一些细节,以什么方式不起作用? – 2010-05-25 20:44:22

回答

1
var xmlHttp; 
    var is_ie = (navigator.userAgent.indexOf('MSIE') >= 0) ? 1 : 0; 
    var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0; 
    var is_opera = ((navigator.userAgent.indexOf("Opera6")!=-1)||(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0; 
    //netscape, safari, mozilla behave the same??? 
    var is_netscape = (navigator.userAgent.indexOf('Netscape') >= 0) ? 1 : 0; 

    function btnClick(){ 
     if (strReportURL.length > 0) 
     { 

      //Create the xmlHttp object to use in the request 
      //stateChangeHandler will fire when the state has changed, i.e. data is received back 
      // This is non-blocking (asynchronous) 
      xmlHttp = GetXmlHttpObject(handler); 
      //Send the xmlHttp get to the specified url 
      xmlHttp_Get(xmlHttp, "AjaxHanlder.aspx?Data="+txtData.Text,handler); 

     } 

    } 

    //stateChangeHandler will fire when the state has changed, i.e. data is received back 
    // This is non-blocking (asynchronous) 
    function handler() 
    { 
     //readyState of 4 or 'complete' represents that data has been returned 
     if (xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete') 
     { 
      //Gather the results from the callback 
      var result = xmlHttp.responseText; 

      //Populate the innerHTML of the div with the results 
      document.getElementById('lblResult').innerHTML = result;   
     } 
    } 


    // XMLHttp send GET request 
    function xmlHttp_Get(xmlhttp, url,handler) { 
     xmlhttp.open('GET', url, true); 
     xmlhttp.onreadystatechange = handler; 
     xmlhttp.send(null); 
    } 

    function GetXmlHttpObject(handler) { 
     var objXmlHttp = null; //Holds the local xmlHTTP object instance 

     //Depending on the browser, try to create the xmlHttp object 
     if (is_ie){ 
      //The object to create depends on version of IE 
      //If it isn't ie5, then default to the Msxml2.XMLHTTP object 
      var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; 

      //Attempt to create the object 
      try{ 
      if(!objXmlHttp) 
       objXmlHttp = new ActiveXObject(strObjName); 
       //objXmlHttp.onreadystatechange = handler; 
      } 
      catch(e){ 
      //Object creation errored 
       alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled'); 
       return; 
      } 
     } 
     else if (is_opera){ 
      //Opera has some issues with xmlHttp object functionality 
      alert('Opera detected. The page may not behave as expected.'); 
      return; 
     } 
     else{ 
      // Mozilla | Netscape | Safari 
      objXmlHttp = new XMLHttpRequest(); 
      objXmlHttp.onload = handler; 
      objXmlHttp.onerror = handler; 
     } 

     //Return the instantiated object 
     return objXmlHttp; 
    } 


///AJAX HANDLER PAGE 

public class AjaxHandler : System.Web.UI.Page 
    { 


private void Page_Load(object sender, System.EventArgs e) 
     { 

     if(Request.QueryString["Data"]!=null) 
     { 

      StoreYourData(Request.QueryString); 
     } 
     } 
    } 
+0

你应该制作一个'IHttpHandler'。 – SLaks 2010-05-25 21:50:07