[英]How to send parameters to Action from javascript function?
我有一個簡單的視圖,顯示一個數據表,我想在AJAX點擊標題時對其中的一個列進行排序,我是AJAX和JS的新手,所以這是我在視圖中的嘗試:
<table id="tbl" class="table">
<tr>
<th>
<a style="cursor: pointer" onclick="getData('desc')" id="sort">Title</a>
</th>
<th>
Author
</th>
<th></th>
</tr>
</table>
@section scripts{
<script type="text/javascript">
$(document).ready(getData('asc'))
function getData(sort) {
var srt = sort;
$.ajax({
type: 'GET',
url: '/Book/BooksData/' + srt,
dataTtype: 'json',
success: function (data) {
$("#tbl > tr").remove();
$.each(data, function (index, val) {
$('#tbl').append('<tr><td>' + val.Title + '</td><td>' + val.Author.Name + '</td></tr>')
});
}
});
}
</script>
}
但是當我單擊標題時, sort
參數在操作中變為null,
public JsonResult BooksData(string sort)
{
var books = new List<Book>();
if (sort == "asc") books = db.Books.Include(b => b.Author).OrderBy(b => b.Title).ToList();
else books = db.Books.Include(b => b.Author).OrderByDescending(b => b.Title).ToList();
return Json(books, JsonRequestBehavior.AllowGet);
}
是的我做錯了,但我修改了很多次,除了在JavaScript中傳遞參數與C#不同外,我看不到邏輯錯誤
這是最簡單的方法。您需要使用query
字符串將sort
值連接到url
。
現在,當您單擊標題時,sort參數必須與您在操作中的值一起使用。
請試試這個:
$.ajax({
type: 'GET',
url: '/Book/BooksData?sort=' + srt,
dataType: 'json',
success: function (data) {
$("#tbl > tr").remove();
$.each(data, function (index, val) {
$('#tbl').append('<tr><td>' + val.Title + '</td><td>' + val.Author.Name + '</td></tr>')
});
}
});
另一種方法是使用這個:
url: '@Url.Action("BooksData","Book")?sort=' + srt
@Url.Action
只返回一個字符串。
在Razor
使用@ block的每個內容都由Razor
自動進行HTML編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.