Ajax-Aufruf immer wieder Erfolg
Habe ich ein ajax-Aufruf an meine controller, die wiederum einen Dienst aufruft, die true oder false zurückgibt. Ich kann nicht scheinen, um herauszufinden, warum diese immer löst mein Erfolg Funktion, wenn er zurückkehrt vom controller zum view.
Controller
[HttpGet]
public JsonResult TagUnit(int id, string selectedItem)
{
try
{
var result = UnitClient.TagUnit(id, selectedItem);
if (!result)
{
throw new InvalidOperationException();
}
return Json(new {success = true}, JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
return Json(new {success = false}, JsonRequestBehavior.AllowGet);
}
}
Cshtml - Javascript - Ajax -
.on("select2-selecting", function (e) {
var url = '@Url.Content("~/UnitDetails/TagUnit/" + Model.ViewUnitContract.Id)';
var id = e.val;
var tagName = e.object.text;
console.log(id + " : " + tagName);
$.ajax({
url: url,
data: { selectedItem: tagName },
type: 'GET',
dataType: 'json',
success: function () {
alert('Success');
},
error: function () {
alert('Error');
}
});
}).select2('val', ['1', '2']);
Was vermisse ich hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie überprüfen, Ergebnis-server Daten an den Erfolg der Methode.
Error " - Methode aufruft, wenn auf dem server 500 Fehler aufgetreten oder der server ist nicht verfügbar, etc.
JsonBehaviour.DenyGet
um zu provozieren, den Fehler aswell?Ich denke, dass wenn Sie werfen eine Ausnahme, es wird immer noch mit Erfolg-status-code. Also, was ich getan habe ist, erstellen Sie eine ajax-Aufruf-Fehler-handler-Attribut verbunden werden können, um Ihre MVC-Methoden. Es wird die Aufnahme nicht abgefangene Ausnahmen, stellen Sie eine Fehler-status-code und geben Sie eine Allgemeine Fehlermeldung (und auch Protokoll zu Elmah). Das Attribut wird unten
Dann schmücken Sie Ihre action-Methoden sollten nur aufgerufen werden, indem Sie Ajax mit:
[Campus.Attribuutit.HandleJsonError]
Die wichtigste Zeile für das auslösen der error-handler in der ajax-Aufruf Objekt ist
HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError
Weiß nicht, ob ich verstehe Ihre Frage richtig.
Erfolg Funktion in Ajax ausgeführt wird, wenn die Anfrage erfolgreich ist. Und Fehler Funktion wird ausgeführt, wenn die Anforderung fehlschlägt. Sie haben zu prüfen, was der server zurückgibt innerhalb der success-Funktion.
http://api.jquery.com/jQuery.ajax/