2009-07-27 10 views
0

J'ai vu beaucoup de questions connexes, mais je n'ai trouvé nulle part un exemple simple de code qui renvoie des paramètres à une méthode de page via jquery.Formulaires ASP.NET: Utilisation de jquery pour publier sur la méthode page asp.net avec paramètres

J'ai regardé quelques-uns des exemples sur encosia.com (merci Dave) mais je n'ai toujours pas réussi à le faire fonctionner. Voici le code jusqu'à présent:

Mis à jour - ajouté du code pour passer dans les paramètres, mais cela ne fonctionne toujours pas.

test.aspx:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>test page</title> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
     // Add the page method call as an onclick handler for the div. 
     $("#Result").click(function() { 
      var intxt = document.getElementById("<%= txtIn.ClientID %>").value; 
      var params = $.toJSON({ 'inStr': intxt }); 
      $.ajax({ 
      type: "POST", 
      url: "test.aspx/RunTest", 
      data: params, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       $("#Result").text(msg); 
      } 
     }); 
     }); 
     }); 
    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div id="Result">Click here</div> 
    <asp:TextBox ID="txtIn" runat="server"></asp:TextBox> 
    </form> 
</body> 
</html> 

et test.aspx.vb:

<WebMethod()> _ 
    Public Shared Function RunTest(ByVal instr As String) As String 
     Return "this is your string: " + instr 
    End Function 

Mise à jour:

Le RunTest menthod ci-dessus est jamais appelé. Cependant, si j'ai aussi:

<WebMethod()> _ 
    Public Shared Function RunTest() As String 
     Return "no params here" 
    End Function 

Puis la 2ème méthode est appelée.

Qu'est-ce qui me manque? Est-ce la mauvaise approche?

Répondre

2

Les paramètres sont sensibles à la casse. Votre

var params = $.toJSON({ 'inStr': intxt }); 

ne correspond pas à la signature de la méthode:

Public Shared Function RunTest(ByVal instr As String) As String 

Le reste semble correct.

Je suggère généralement using json2.js' JSON.stringify() to serialize JSON on the client-side, au lieu d'autres plugins comme $ .toJSON. L'API de json2.js correspond à la norme ECMA pour le support JSON natif du navigateur, implémenté par les navigateurs les plus récents (IE8 et Fx3.5 jusqu'à présent). Ainsi, si vous utilisez JSON.stringify() pour sérialiser vos objets, il sera automatiquement mis à niveau vers la fonctionnalité native plus rapide de ces navigateurs.

+0

merci @Dave Ward, j'ai également bloqué dessus et surmonter le problème après avoir rendu les params sensibles à la casse. Merci beaucoup!. –