2010-11-07 12 views
1

J'essaie d'appeler une méthode asp.net en utilisant jquery/ajax à partir d'un clic sur une boîte de dialogue modale. Mais tout ce que je semble obtenir est et alerte en disant "erreur". J'ai vu beaucoup d'exemples similaires en ligne, mais je n'arrive pas à le faire fonctionner. La page/méthode que j'appelle (newcall.aspx/savenote) est la même page que toutes les jquery/ajax etc.asp.net jquery ajax post

Des idées?

Merci,

 var dlg = jQuery("#dialog2").dialog({ 
      bgiframe: false, 
      autoOpen: true, 
      height: 410, 
      width: 800, 
      modal: true, 
      show: 'Transfer', 
      hide: 'Transfer', 
      draggable: true, 
      resizable: true, 
      buttons: { 
       "Cancel": function() { 
        $(this).dialog("close"); 
       }, 
       "Save": function() { 
        var txtnote = document.getElementById("<%=txtNote.ClientID %>").value; 

        $.ajax({ 
         type: "POST", 
         url: "newcall.aspx/savenote", 
         data: txtnote, 
         contentType: "application/json; charset=utf-8", 
         dataType: "json",        
         success: function(msg) { 
          alert(msg); 
         },   
         error: function(XMLHttpRequest, textStatus, errorThrown) { 
          alert(textStatus); 
         } 
        }); 

        $(this).dialog("close"); 
       } 
      } 
     } 

     ); 

code derrière la méthode :(En ce moment je suis juste retour "ok")

Public Function savenote() As String 
    Return "ok" 
End Function 
+0

Attribut WebMethod manquant? – tvanfosson

+0

Modifier 'alert (textStatus);' à 'alert (errorThrown);', qu'obtenez-vous? –

+0

Maintenant, je suis "non défini" – thegunner

Répondre

1

Vous devez ajouter l'attribut WebMethod, déclare la méthode de page Shared, et faites correspondre les données que vous envoyez avec la signature de la méthode. Voici comment vous devriez changer votre méthode côté serveur:

<WebMethod()>_ 
Public Shared Function savenote() As String 
    Return "ok" 
End Function 

Vous pouvez sortir sans changer vos paramètres de données, mais probablement pas, car il est invalide JSON. Essayez de modifier votre paramètre de données à {} pour l'instant. Lorsque vous êtes prêt à commencer à transmettre txtnote à votre méthode côté serveur, vous devez passer cela comme {txtnote: 'Your note string here'}.