2016-09-11 8 views
2

Ich möchte die ID an den Controller (ASP.NET MVC 5) übergeben und das Ergebnis vom Controller erhalten. Ich habe den folgenden Code:Parameter an Ajax sicher übergeben

function LoadBook(id) { 
    $.ajax({ 
     url: '/Book/GetBookById' + id, 
     type: 'get', 
     dataType: 'json', 
     success: function (data) { 

     }, 
     error: function (err) { 
      alert("Error: " + err.responseText); 
     } 
    }) 
} 

Ist es sicher URL zu tun: '/ Buch/GetBookById' + id? Und wenn es nicht sicher ist, gibt es eine Möglichkeit, dies zu tun?

+1

Sie müssen Ihren Parameter URL-encodieren. – SLaks

+0

Wenn Sie nach einer RESTful-Methode suchen, sollte Ihre URL wie folgt aussehen: '/ Book/[id]' oder '/ Book/GetBookById/[id]' (der zweite Weg scheint mir überflüssig). Nicht-RESTful könnten Sie/Book/GetBookById? ID = [ID]. Das heißt, die VS-Tools könnten dies für Sie automatisch aufbauen. – richb01

Antwort

1

Die vorgeschriebene Art und Weise zu verwenden, dies zu tun ist:

public JsonResult GetBookById(int id) 
{ 
    // do your getting here 
    var yourdata = MyDataAccessClass.getBookById(id); 
    return new Json(yourdata, JsonRequestBehavior.AllowGet); 
} 

Ihre AJAX-URL wäre dann:

function LoadBook(id) { 
$.ajax({ 
    url: '/Book/GetBookById/' + id, 
    type: 'get', 
    dataType: 'json', 
    success: function (data) { 

    }, 
    error: function (err) { 
     alert("Error: " + err.responseText); 
    } 
}) 
} 

Dies ist die "sichere" und Standard-Weg, um Anrufe in Microsofts MVC zu machen.

+0

Sie müssen immer noch den Parameter verlassen. – SLaks

+0

Nur wenn es keine ganze Zahl ist. In meinem Beispiel ist es so, also ist kein Entkommen notwendig. Natürlich ist nicht klar, welcher Datentyp im OP-Code enthalten ist. :-) – richb01

+0

@ richb01 das ist was ich tat. Vielen Dank! Vielen Dank auch SLaks, ich wusste nicht über die Codierung Parameter, um es sicherer zu machen. Aber jeder kann es richtig dekodieren? Da ich die Codierungstabelle auf W3C sehe, wie wird die Codierung den Parameter sicherer machen? –

1

Sie benötigen

encodeURIComponent(Id) 
Verwandte Themen