簡體   English   中英

如何從javascript函數向Action發送參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM