2016-04-24 19 views
0

Ich bin mir nicht sicher, warum ich Parse-Fehler bekomme. Ich setze den dataType dynamisch auf meinem Ajax und wenn ich es mit json als dataType rufe, erhalte ich einen Parsefehler.Erhalten von Parseerror auf meinem Ajax-Ergebnis zurück

MVC Controller-Aktion

public ProductViewModel UpdateProduct(ProductViewModel product) 
    { 
     var productContract = Mapper.Map<ProductViewModel, ProductContract>(product); 
     var productReturned = _productService.UpdateProduct(productContract); 

     if (productReturned.HasValue) 
     { 
      return Mapper.Map<ProductContract, ProductViewModel>(productReturned.Value); 
     } 
     return null; 
    } 

Anruf Ajax

var ajaxCall = function (destinationUrl, dataToPost, ajaxDataType, element, callbackFunction) { 
    $.ajax({ 
     url: destinationUrl, 
     data: dataToPost, 
     contentType: "application/json", 
     dataType: ajaxDataType, 
     success: function (data) { 
      callbackFunction(data, element); 
     }, 
     error: function (req, status, errorObj) { 
      console.log(status); 
     } 
    }); 
} 

callback

Dies ist die Methode, die auf dem Ajax-Erfolg läuft, ist mein Datenbank-Update erfolgreich aber ich brauche t Die Daten wurden zurückgegeben, um die Benutzeroberfläche zu aktualisieren. Ich habe versucht, es wie data, data.d und data.d[0]

function updateProductRow(data, element) { 
    console.log(data.d[0]); 
} 
+0

Haben Sie die Rückgabedaten in den Entwicklertools eingecheckt? –

+0

@KarthikMR deshalb logge ich die zurückgegebenen Daten ein, parseerror –

+1

Das bedeutet, dass Sie keinen gültigen JSON zurückgeben. Die Rückgabe Null wird definitiv dazu führen. Ich bin nicht vertraut mit dem Code in der anderen Rückkehr Fall, ist das Produzieren Json? Es sieht nicht so aus – DelightedD0D

Antwort

0

bekomme ich es herausgefunden, im Fall von ASP.NET MVC-Anwendung mit der Controller-Aktion, ich hatte nur ein Attribut über meiner Methode müssen Verb akzeptieren was wird ein Beitrag sein. Und um den Rückgabetyp in ein JSON-Ergebnis zu konvertieren.

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult UpdateProduct(ProductViewModel product) 
    { 
     var productContract = Mapper.Map<ProductViewModel, ProductContract>(product); 
     var productReturned = _productService.UpdateProduct(productContract); 

     if (productReturned.HasValue) 
     { 
      return Json(Mapper.Map<ProductContract, ProductViewModel>(productReturned.Value)); 
     } 
     return null; 
    } 
+0

Als Beobachtung, bei der Sie "null zurückgeben" haben, sollten Sie eine gültige JSON-Antwort mit einer sinnvollen Fehlermeldung anstelle von null zurückgeben. Derzeit, wenn Sie jemals die 'Return null;' drücken, erhalten Sie den gleichen Parse-Fehler, über den Sie gefragt haben. Wenn stattdessen eine sinnvolle Fehlermeldung zurückgegeben wird, ist dies eleganter und hilft Ihnen dabei, insgesamt eine bessere UX bereitzustellen. Nur meine zwei Cent aber :) – DelightedD0D

+0

@ DelightedD0D Danke! ... ich hatte geplant, etwas wie {Beschreibung: "ein Fehler ist passiert"} .. haben Sie eine E-Mail? –