2016-09-11 3 views
2

컨트롤러 (ASP.NET MVC 5)에 ID를 전달하고 컨트롤러에서 결과를 가져 오려고합니다. '/ 도서/GetBookById'+ 아이디 :매개 변수를 Ajax에 안전하게 전달하십시오.

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

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

URL을 할 안전한가요 : 나는 다음과 같은 코드가? 그리고 안전하지 않다면, 이것을 할 방법이 있습니까?

+1

매개 변수를 URL 인코딩해야합니다. – SLaks

+0

이것을하기위한 RESTful 방법을 찾고 있다면 URL은'/ Book/[id]'또는'/ Book/GetBookById/[id]'처럼 보일 것입니다. RESTful이 아닌/Book/GetBookById? id = [id]. 그렇다고해서 VS 도구가 자동으로 이것을 비계 할 수 있습니다. – richb01

답변

1

규정 된 방법이 필요하다 :

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

귀하의 AJAX URL은 다음과 같습니다

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

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

이가 "안전"입니다 Microsoft의 MVC에서 표준 방식으로 전화를 걸 수 있습니다.

+0

여전히 매개 변수를 이스케이프 처리해야합니다. – SLaks

+0

정수가 아닌 경우에만. 나의 예에서는 그렇기 때문에 탈출 할 필요가 없다. 물론 OP의 코드에 데이터 유형이 무엇인지는 명확하지 않습니다. :-) – richb01

+0

@ richb01 이것은 내가 한 일을 추출한 것입니다. 고맙습니다! 감사합니다. SLaks, 인코딩 매개 변수에 대해 더 잘 이해하지 못했습니다. 하지만 모두가 제대로 해독 할 수 있습니까? W3C에서 인코딩 테이블을 보았으므로 인코딩이 어떻게 매개 변수를보다 안전하게 만들 수 있을까요? –

1

당신은이 작업을 수행 할

encodeURIComponent(Id) 
관련 문제