2013-01-31 6 views
27

Ich weiß, es gibt Tonnen von Antworten für dieses Thema, aber konnte die Lösung für mein Problem nicht finden. Ich habe eine Web-API ASP.NET MVC, die wie folgt aussieht:Weitergabe eines JSON-Arrays an die MVC-Web-API über GET

Und ich habe versucht, es so nennen:

$.ajax({ 
     dataType: "json", 
     data: JSON.stringify({idList: listOfIds}),    
     type: "GET", 
     url: "api/v1/util/CountryList", 
     success: function (result) { 
      alert(result); 
     } 
    }); 

Die URL sieht dann wie folgt aus:

https://localhost/supertext/api/v1/util/CountryList?{%22idList%22:[46,14,62,83,120]} 

Alternative:

$.ajax({ 
     dataType: "json", 
     data: { 
      idList: JSON.stringify(listOfIds), 
     }   
     type: "GET", 
     url: "api/v1/util/CountryList", 
     success: function (result) { 
      alert(result); 
     } 
    }); 

URL:

https://localhost/supertext/api/v1/util/CountryList?idList=%5B46%2C14%2C62%2C83%2C120%5D 

Beide Methoden funktionieren nicht.

Muss ich wirklich senden und empfangen es als Zeichenfolge oder POST verwenden?

Antwort

54

Nein, versuchen Sie nicht, JSON in einer GET-Anfrage zu senden. Verwenden Sie JSON mit anderen Verben, die einen Text enthalten, z. B. POST und PUT.

es der normale Weg, indem du deinen Aktionsparameter mit dem [FromUri] Attribut schmücken:

public IList<Country> GetCountryList([FromUri] List<long> idList) 
{ 
    ... 
} 

und lösen dann nur die AJAX-Request:

$.ajax({ 
    url: 'api/v1/util/CountryList', 
    type: 'GET', 
    data: { idList: [1, 2, 3] }, 
    traditional: true, 
    success: function (result) { 
     console.log(JSON.stringify(result)); 
    } 
}); 

Weitere empfohlen für Sie lesen, wie die Modellbindung in der Web-API funktioniert:

http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1

+0

Danke! Das funktioniert, wenn ich Daten fest codiere: {idList: [1, 2, 3]}, aber nicht, wenn ich Daten verwende: JSON.stringify ({idListe: listOfIds}), – Remy

+7

Aber warum stringierst du ???? "JSON.stringify" nichts! Ich habe dir bereits gesagt, dass du JSON mit einer GET-Anfrage in meiner Antwort nicht verwenden sollst. Ihre Anfrage sollte so aussehen: 'data: {idList: listOfIds}'. Offensichtlich nehme ich an, dass 'listOfIds' ein Javascript-Array von Zahlen ist. –

+1

Entschuldigung, ich brauchte etwas länger, um alles zu verstehen. Arbeite jetzt! Danke vielmals. – Remy

Verwandte Themen