2013-10-28 21 views
10

Mit etwas Mühe:mit jQuery Post ASP.Net WebAPI

ich diesen einfachen Test machen und die Warnung erscheint der Text "Test zurückzukehren einfach" up:

jQuery Beitrag:

$.post("http://www.localhost/webapi/api/corkboard/test/", jsonData) 
      .done(function(data){ 
       alert(data); 
     }); 

Asp.Net WebAPI:

[HttpPost] 
public string test() 
{   
    return "test return simple"; 
} 

Aber wenn ich die WebAPI ändern, um einen Parameter durch Hinzufügen:

public string test(string JSONData) 
    { 
     var jData = Json.Decode(JSONData); 
     return "test return: " + jData.Filter;    
    } 

bekomme ich folgende Fehlermeldung:

„No HTTP-Ressource gefunden wurde, der die Anforderung 'http://www.localhost/webapi/api/corkboard/test/'

Fest URI übereinstimmt und alle Gedanken schätzen würde ... Danke!

+0

Welchen Webserver verwenden Sie als Ihr Backend? Die spezifische Technologie sollte definieren, wie Post-Methoden und die Daten, die als POST-Anforderung eingehen, behandelt werden. Es ist möglicherweise nicht so geradlinig wie das Hinzufügen eines Parameters in Ihrem POST-Methodenhandler. – amitsaurav

+0

Ich benutze .net WebAPI ... Ich versuche, einigen vorhandenen Code zu folgen, den ich fand, der die gleiche Architektur verwendet: jquery Beitrag und .net webapi ... aber ich bin an diesem Teil ... gefangengegangen – nanonerd

+0

I bin kein Experte für .net Webapi, aber fand einen Link, der darüber spricht, wie Sie Ihre GET, POST und andere HTTP-Handler konfigurieren: http://www.codeproject.com/Articles/549152/Introduction-to-ASP-NET-Web -API – amitsaurav

Antwort

14

ändern WebAPI Methode:

public string test([FromBody]string JSONData) 
    { 
     var jData = Json.Decode(JSONData); 
     return "test return: " + jData.Filter;    
    } 

und Ihre JQuery zu:

$.post('http://www.localhost/webapi/api/corkboard/test/', { '': jsonData }) 
     .done(function(data){ 
      alert(data); 
    }); 
+1

Bravo, das funktioniert. Tks. Aber Mann, die Syntax ist wirklich skurril und ich war nicht damit vertraut ... für weitere Details, siehe den Encosia.com Artikel im Beitrag von J. Marley. - Prost ! – nanonerd

6

Versuchen Sie, den folgenden Code ..

$.post("http://www.localhost/webapi/api/corkboard/test/", { value: jsonData }) 
      .done(function(data){ 
       alert(data); 
     }); 

Alternativ können Sie unter folgendem Link einsehen ..

http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/

+0

Der Link hat wertvolle und gut erläuterte Details. Vielen Dank. –

+8

Chrome sagt, dass Link auch Malware enthält, nur damit Sie wissen. – kaelle