Die nach dem AJAX Anrufer:Nach einer Ajax-GET-Anfrage an Controller-Methode, die eine Redirect-URL in JSON zurückgeben sollte, ist mir ein 500-Fehler bekommen und nicht den AJAX Erfolg schlägt
function editItem(id) {
$.ajax({
type: 'GET',
url: '/bookmarkrest/edititem?Id=' + id,
success: function (json) {
//alert('Success.');
window.location.href = json.redirectUrl;
},
error: function() {
alert("No Change.");
}
});
};
Das Folgende ist die Methode genannt. Die editlink Methode sollte mich nehmen auf eine andere Seite (die angegebene Seite):
public ActionResult EditItem(int? Id = 0)
{
try
{
Bookmark bookmark = repository.GetBookmark(Id);
if (bookmark is Link)
{
return Json(new { redirectUrl = Url.Action("EditLink", "BookmarkREST", new { Id = Id }) });
}
return RedirectToAction("Index", "Home");
}
catch (Exception)
{
return RedirectToAction("Index", "Home");
}
}
[HttpGet]
public ActionResult EditLink(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Link link = repository.GetLink(id);
if (link == null)
{
return HttpNotFound();
}
return View(new LinkViewModel { name = link.Name, uri = link.URI });
}
ich bin auch die richtige Antwort in der Netzwerk-Request-Response-Registerkarte Chrome bekommen Developer-Tool:
Wenn ich die URL eintippe, greife ich auf die korrekte Seite mit den Daten zu:
Ich bin nicht sicher, warum ich auf dem Sam gehalten werde e Seite, kann jemand helfen?
Da der ganze Sinn von AJAX ist auf der gleichen Seite zu bleiben. Wenn Sie nur auf die andere Seite gehen möchten, ist ein Link. – David
Verwenden Sie einfach einen normalen Anker oder Sie müssen die Umleitung selbst durchführen 'window.location = url' – Jasen
Ich habe 2 Zeilen Code hinzugefügt, einen in ajax success, einen in EditItem, um JSON zurückzugeben. Ich bekomme einen 500 Fehler. – naz786