2010-08-13 5 views
6

Ich versuche ein JavaScript-Array für eine Ajax-Anfrage an meinen Webserver zu senden. Hier ist mein Code:Warum sendet Jquery "undefined = undefined" als Post-Parameter, anstatt die Array-Daten zu senden?

function SearchTasksByTags() { 
     // Get the list of tags currently chosen 
     var tags = []; 
     $('.tagit-choice input').each(function() { tags.push($(this).val()); }); 

     // If we have no tags, don't bother searching and just clear the current results 
     if (tags.length == 0) { 
      $('#tagSearchResults').empty(); 
      return; 
     } 

     // Retrieve the search results from the server 
     $.ajax({ url: '<%= Url.Action("SearchByTags") %>', 
      data: tags, 
      type: 'POST', 
      success: function (html) { 
       $("#tagSearchResults").empty().append(html); 
      } 
     }); 
    } 

Das Array korrekt gebildet wird, als wenn ich traf den $.ajax() Anruf Chrome-Entwickler-Tools zeigen die Tags Objekt als ein Array mit zwei Elementen zu sein (alle Elemente sind nur Strings).

Doch nach Fiedler, immer die tatsächlichen Post-Parameter an den Server gesendet werden:

undefined=undefined 

Was mache ich falsch?

bearbeiten console.log zeigt:

console.log(tags) 
["portability", "testing"] 
undefined 
+4

'tags' ist nicht ein assoziatives Array, so stelle ich mir jQuery eine harte Zeit haben. Obwohl ich überrascht bin, dass es als "undefiniert" behandelt wird, ist das wahrscheinlich das Problem. –

Antwort

9

Was macht ein console.log (Tags) sagen über die Tags?

Try es wie folgt gesendet: den Aufbau einer Abfrage-String aus es

data : ({tags : tags}) 
+0

Console.log-Ausgabe zu Frage – KallDrexx

+0

hinzugefügt Das hat funktioniert! (Ich habe vergessen, meine Seite zu aktualisieren, bevor Sie Ihre Lösung versuchen) – KallDrexx