2009-12-31 4 views
0

Je veux publier des données à un service Web avec ajax. il est mon code ajax:Ajax erreur post

function Looping() { 
     var Grid = document.getElementById("<%= gvHastalar.ClientID %>"); 
     var Row; 
     var Cell; 
     if (Grid.rows.length > 2) { 
      for (i = 1; i < Grid.rows.length - 1; i++) { 
       Row = Grid.rows[i]; 
       Cell = Row.cells[3]; 
       alert(Cell.innerHTML); 
       var html = $.ajax(
       { 
        type: "POST", 
        url: "http://localhost:7753/HastaTahlilUyariServisi.asmx/f_HastaninAktarilacakAlislabTestleri", 
        data: "{_sTcKimlikNo:" + Cell.innerHTML + ",_iKlinikKodu:18001,_bAy:12,_iYil:2009}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: alert('success'), 
        error: alert('error') 
       } 
       ).responseText; 
       Row.style.backgroundColor = "#D3EFD1"; 
      } 
     } 
    } 

Et le code de ma fonction webservice est ici:

[WebMethod] 
    [SoapHeader("_ticket", Direction = SoapHeaderDirection.In)]//SoapHeaderDirection.Out 
    public DataSet f_HastaninAlisLabTahlilleri(string _sTcKimlikNo, int _iKlinikKodu, byte _bAy, int _iYil) 
    { 
     try 
     { 
      string QSelect = 
           @"SELECT * FROM [V_EUCLID_SONUC] 
           WHERE MONTH(KAYITTARIHI) = " + _bAy + @" 
            AND YEAR(KAYITTARIHI) = " + _iYil + 
            AND TCKIMLIKNO = '" + _sTcKimlikNo + @"'"; 

      return dbA.ExecuteDataSet(CommandType.Text, QSelect); 
     } 
     catch (Exception ex) 
     { 
      throw (ex); 
     } 
    } 

Il y a un point de rupture sur la fonction qui est au service Web, mais debug ne vont jamais ce point de rupture. J'ai collé l'url de webservice du navigateur mais peut être url est faux. Et quand je cours le projet, j'ai 3 alerte. Texte de première cellule son normal.Second alerte est succès et la dernière alerte est erreur. Je souhaite envoyer des paramètres à f_HastaninAlisLabTahlilleri et à l'ensemble de données de retour utilisateur. Comment puis-je faire ceci?

Merci à l'avance

Répondre

1

Voici quelques remarques au sujet de votre code:

  1. success et error sont fonctions de rappel, ils doivent être définis comme ceci:

    success: function(data) { alert('success'); }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { alert('error'); } 
    
  2. services Web ASMX utilisent SOAP par défaut, à moins que vous les décorez avec ScriptServiceAttribute auquel cas JSON pourrait être utilisé pour invoquer une méthode. Il n'est pas clair à partir de votre code si le service Web est décoré avec cet attribut.
  3. Lorsque vous passez des paramètres, vous devez les encoder, utiliser JSON. stringify au lieu de chaînes concaténer:

    data: JSON.stringify({_sTcKimlikNo: Cell.innerHTML, 
             _iKlinikKodu: 18001, 
             _bAy: 12,_iYil: 2009}); 
    

Utilisez FireBug pour inspecter le réseau des requêtes AJAX et les réponses du serveur et les poster sur StackOverflow pour faciliter le débogage .

0

Vous ne pouvez pas mettre un point de rupture dans le code-service Web-à-dire même l'IDE ne laisserait pas u déboguer le code service web .... il est un vieil héritage VS. IDE net a depuis sa création ... permet de voir si elle est résolu dans VS 2010.

+0

Quoi? Faux. Pour obtenir des instructions, consultez http://msdn.microsoft.com/en-us/library/0twaftwz.aspx. –

0

L'URL que vous avez spécifiée dans le script JQuery n'est pas égale au nom de la fonction dans le code C#. N'est-ce pas le point. * f_HastaninAktarilacakAlislabTestleri * dans url et * f_HastaninAlisLabTahlilleri * dans C# code. Certaines raisons d'un tel problème peuvent être incorrectes url ou déférence entre la liste des arguments de la requête client et la liste des arguments de la méthode ou de l'action côté serveur.