2010-08-30 13 views
1

J'apprends javacript, et je suis sur le point où je veux commencer à faire des trucs asynchrones. Voici l'essentiel de ma quête:ASP.net Javascript Postback

J'ai le code HTML qui ressemble à ceci:

<a id='nine' onclick="SendToServer('nine');">Nine</a> 

Je veux alors un moyen de, en Javascript, envoyer au serveur qu'un # neuf a été cliqué. Je veux alors une sorte de fonction gestionnaire dans C# pour mettre à jour une entrée dans une base de données.

public void GetMessageFromJSHandler(int id) 
{ 
    Item[x][y] = id; 
}   

Je ne veux pas la page pour reload, je ne veux rien changer sur la page, et je veux le faire en javascript droite afin que je puisse apprendre comment il fonctionne.

Ceci est une grande ressource: http://msdn.microsoft.com/en-us/library/ms178210.aspx J'ai fini par modifier cet exemple pour mes besoins. Tous les J et très simple.

Répondre

1

Eh bien, dans le contexte de votre question, vous êtes sur la bonne voie. Vous pouvez utiliser cet exemple: http://www.devx.com/DevX/Tip/17500 pour voir comment remplir votre fonction SendToServer

GetMessageFromJSHandler sera probablement appelé par la méthode ProcessRequest d'un implémenteur de IHttpHandler, au moins dans le scénario le plus simple.

mais cette façon de faire est vraiment à des fins académiques, en apprenant la plomberie pour ainsi dire. Dans un environnement de production, il vaut mieux utiliser un framework. Mon crack personnel de choix est jquery sur le client et ASP.NET MVC sur le serveur, mais si vous aimez ASP.NET "régulier" (aka webforms) alors consultez les bibliothèques MS Ajax pour voir des façons plus faciles de faire des choses dans un évolutive & mode maintenable.

1

Vous pouvez marquer vos méthodes de page avec un attribut WebMethod pour créer des stubs pour eux sur le côté client. Voici un example. Une autre chose que vous pourriez faire est de rendre votre méthode de page statique et l'appeler en utilisant la fonction ajax() de jQuery. Here is how this way works.

1

jQuery:

function SendToServer(id) 
{ 
    $.ajax({ 
         url: "/GetMessageFromJSHandler", 
         type: "POST", 
         data: { 'id': id } 
      }): 

}

+0

c'est le meilleur exemple. –

1

fonction sendToServer (id) {var PAGEURL = "SamplePage.aspx? Callback = true & Itemid =" + point si (window.XMLHttpRequest) { var xmlRequest = new XMLHttpRequest(); } sinon { var xmlRequest = new ActiveXObject ("Microsoft.XMLHTTP"); } xmlRequest.open ("POST", pageUrl, false); xmlRequest.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded"); xmlRequête.envoyer (nul); }

On pageLoad you just check the callback flag and call your function 



if(Request.QueryString["callback"].ToString() == "true") 
    { 
    string id = Request.QueryString["ItemId"].ToString() 
    GetMessageFromJSHandler(int id); 
    }