2017-12-20 1 views
0

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 }); 

    } 

enter image description here

ich bin auch die richtige Antwort in der Netzwerk-Request-Response-Registerkarte Chrome bekommen Developer-Tool: enter image description here

Wenn ich die URL eintippe, greife ich auf die korrekte Seite mit den Daten zu: enter image description here

Ich bin nicht sicher, warum ich auf dem Sam gehalten werde e Seite, kann jemand helfen?

+4

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

+0

Verwenden Sie einfach einen normalen Anker oder Sie müssen die Umleitung selbst durchführen 'window.location = url' – Jasen

+0

Ich habe 2 Zeilen Code hinzugefügt, einen in ajax success, einen in EditItem, um JSON zurückzugeben. Ich bekomme einen 500 Fehler. – naz786

Antwort

0

Die Ajax-Anfrage hatte eine POST und Datentyp-Attribut enthalten sein:

function editItem(id) { 

      $.ajax({ 
       type: 'POST', 
       datatype: 'JSON', 
       url: '/bookmarkrest/edititem?Id=' + id, 
       success: function (json) { 
        //alert('Success.'); 
        window.location.href = json.redirectUrl; 
       }, 
       error: function (json) { 
        alert(json.message); 
       } 
      }); 
     }; 
Verwandte Themen