2010-11-15 5 views
0

J'essaie d'utiliser jQuery ajax pour obtenir des valeurs de la base de données, puis les retourner dans un tableau.jQuery ajax - réponse vide retournée

J'ai utilisé le même code plusieurs fois auparavant mais cette fois-ci, aucune réponse n'est renvoyée. Bien que les valeurs de poste sont les valeurs correctes que je m'attendais. Voici le code javascript que j'utilise:

$.ajax({ url: '/BlogArchive.asmx/ChangePost' 
        , type: 'POST' 
        , contentType: 'application/json; charset=utf-8' 
        , data: '{FileName:"' + FileName + '"}' 
        , dataType: 'json' 
        , success: function (data) 
        { 
         var arrayList = data.d; 

         var BlogPostTitle = $(".BlogPostTitle")[0]; 
         var BlogPostDate = $(".BlogPostDate")[0]; 
         var BlogPostContent = $(".BlogPostContent")[0]; 

         $(BlogPostTitle).html(arrayList[0]); 
         $(BlogPostDate).html(arrayList[1]); 
         $(BlogPostContent).html(arrayList[2]); 

        } 
//     , error: function (XMLHttpRequest, textStatus, errorThrown) 
//     { 
//      //There was an error 
//      alert('dfd'); 
//     } 
      }); 

La seule erreur javascript que je reçois est que les données est nulle, que je pense que la réponse est vide.

Il semble que le nom de la méthode web que j'appelle de mon javascript n'est même pas lu, parce que si j'ai changé 'ChangePost' en 'ChangePost1' par exemple, il renvoie toujours une réponse vide, bien que je attendez un message d'erreur indiquant que la méthode Web est introuvable.

Il semble qu'il reconnaisse que le service Web BlogArchive.asmx existe parce que si je mets quelque chose qui créerait une erreur dans le code VB, l'erreur apparaît comme la réponse. Je suis sûr que cela doit être quelque chose de simple que je me trompe. Toute aide serait appréciée.

+0

Y a-t-il une raison pour laquelle vous définissez les variables POST [attribut de données] dans une chaîne JSON et pas seulement un objet JSON? –

+1

@bradchristie - http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/ – jball

Répondre

0
, data: '{FileName:"' + FileName + '"}' 

Semble impair. Vous avez probablement voulu dire:

, data: {FileName: FileName} 

(ou 'FileName=' + FileName)

De plus, avez-vous inspectez la demande (et la réponse) par l'intermédiaire Firebug ou similaire?

+0

ouais utilisez firebug! Cela vous fera gagner énormément de temps à résoudre ces problèmes! +1 –

+0

Voir les "JSON, objets et chaînes: oh mon!" section de ce [post de blog] (http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/) pour voir pourquoi la chaîne littérale est requis avec asp.Net – jball

+0

Merci pour votre réponse - J'ai essayé de changer la ligne 'data' de la façon que vous avez suggérée mais j'ai toujours la même réponse vide. En outre, oui j'utilise FireBug - c'est là que j'ai remarqué que la réponse était vide. Je peux voir dans l'onglet "Post" que les valeurs sont également envoyées correctement. – Leah

0

Vous devriez essayer d'utiliser jQuery getJSON avec les arguments minimum.

Une autre chose, lorsque vous utilisez JSON avec jQuery, si les données de réponse ne sont pas wellformed (comme un espace avant/après la chaîne JSON de départ) pourrait conduire à une réponse vide de jQuery.

Assurez-vous d'utiliser AJAX traditionnel avec jQuery pour que vos réponses soient correctes.