2013-10-28 18 views
10

avendo qualche problema:utilizzando jQuery post per ASP.Net WebAPI

faccio questo semplice test e l'allarme si apre il testo "test tornare semplice":

jQuery postale:

$.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"; 
} 

Ma quando cambio la WebAPI con l'aggiunta di un parametro:

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

ottengo il seguente messaggio di errore:

"è stata trovata alcuna risorsa HTTP che corrisponde l'URI della richiesta 'http://www.localhost/webapi/api/corkboard/test/'

Bloccato e gradirebbe qualsiasi pensiero ... grazie!

+0

Quale server Web stai utilizzando come back-end? La tecnologia specifica dovrebbe definire come gestire i post-metodi e i dati in arrivo come richiesta POST. Potrebbe non essere così semplice come aggiungere un parametro nel gestore del metodo POST. – amitsaurav

+0

Sto usando .net WebAPI ... Sto cercando di seguire un codice esistente che ho trovato che usa la stessa architettura: jquery post e .net webapi ... ma mi sono impigliato su questa parte ... – nanonerd

+0

I non sono un esperto di .net webapi ma ho trovato un collegamento che parla di come configurare il tuo GET, POST e altri gestori HTTP: http://www.codeproject.com/Articles/549152/Introduction-to-ASP-NET-Web -API – amitsaurav

risposta

14

cambiare il metodo WebAPI a:

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

e il tuo JQuery a:

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

Bravo, questo funziona. Tks. Ma uomo, la sintassi è davvero bizzarra e non avevo familiarità con esso ... per ulteriori dettagli, vedere l'articolo di Encosia.com nel post di J. Marley. - Saluti ! – nanonerd

6

Provate il seguente codice ..

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

In alternativa, è possibile controllare il seguente link ..

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

+0

Il link contiene dettagli preziosi e ben spiegati. Grazie. –

+8

Chrome afferma che il collegamento contiene anche malware solo per quello che sai. – kaelle

Problemi correlati