2016-09-11 31 views
2

我想將id傳遞給控制器​​(ASP.NET MVC 5)並從控制器獲取結果。我有以下代碼:將參數傳遞給Ajax安全方式

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

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

它是安全做網址: '/書/ GetBookById' + ID?如果它不安全,有沒有辦法做到這一點?

+1

您需要對您的參數進行網址編碼。 – 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網址是:

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)