2016-09-13 4 views
0

Wenn ich ein Webapi von Ajax anrufe, wenn ich etwas anderes als einfache Zeichenfolge oder int zurückgebe, steht die Anfrage noch aus.WebApi 2 - JSON-Anforderung ausstehend

hier mein javascript:

var endPoint = "/api/services/attivita/set"; 
$.ajax({ 
    url: endPoint, 
    data: JSON.stringify(
     { 
     'id': attivita.IDTipoAttivita, 
     'descrizione': $('#Descrizione').val() 
     } 
    ), 
    dataType: 'json', 
    contentType: "application/json;charset=utf-8", 
    processData: false, 
    type: 'post', 
    success: function (data) { 
     console.log('ok'); 
    }, 
    error: function (data) { 
     console.log('ko'); 
    } 
}); 

und hier WebAPI Code

[System.Web.Http.HttpGet] 
    [System.Web.Http.HttpPost] 
    [System.Web.Http.Route("api/services/attivita/set")] 
    public TipoAttivita SetAttivita([FromBody] dynamic obj) 
    { 
     var id = (int)obj.id; 
     var descrizione = obj.descrizione.ToString(); 
     var nuovo = id == -1; 

     var attivita = new TipoAttivita() 
     //do stuff of attivita object 
     this.CurrentDb.TipoAttivita.Add(attivita); 
     this.CurrentDb.SaveChanges(); 

     return (attivita); 
    } 

Wenn ich auf "public int ...." ändern und "return (1);" Am Ende der Funktion funktioniert alles einwandfrei.

in WebApiConfig.cs Ich habe diese

var jsonFormatter = new JsonMediaTypeFormatter 
     { 
      SerializerSettings = {ReferenceLoopHandling = ReferenceLoopHandling.Ignore} 
     }; 
     jsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json")); 

     config.Formatters.Clear(); 
     config.Formatters.Add(jsonFormatter); 

Jede Idee? Vielen Dank

+0

Sie wollen innerhalb SetAttivita Aktion-Methode einen Haltepunkt zu setzen und zu debuggen. – Win

+0

Können Sie Ihren TipoAttivita-Quellcode anzeigen? –

+0

TipoAttivita ist ein Objekt aus Entity Framework generierten Modell, und im Debug-Modus gehen die Funktion bis zum Ende, aber im Browser gibt es keine Antwort –

Antwort

0

Try Rückkehr Typ IHttpActionResult zu ändern und zurück Ok(attivita)

+0

mit IHttpacctionresult steht noch aus –