簡體   English   中英

如何在spring boot中處理ajax post數據

[英]How to handle ajax post data in spring boot

我正在使用jquery ui sortable重新排序我的項目中的頁面順序,但似乎我不知道如何在spring boot中正確處理這個發布的ajax數據。

jQuery的/ AJAX

$("table#pages tbody").sortable({
        items: "tr:not(.home)",
        placeholder: "ui-state-highlight",
        update: function () {
            let ids = $("table#pages tbody").sortable("serialize");
            let url = "/admin/pages/reorder";

            // $.post(url, ids, function (data) {});
            $.ajax({
                url: url,
                method: "post",
                data: ids,
                beforeSend: function () {
                },
                complete: function () {
                },
                success: function (response) {
                }
            });
        }
    });

所以從上面來看, ids變量應該是一個名為id的數組整數,所以我應該在我的請求中得到類似下面的東西:handler = int[] id (單數id是正確的)

因此,考慮到上述情況,我嘗試在我的請求處理程序方法中執行此操作:

@PostMapping("reorder")
    public void reorder(int[] id) {
        int count = 1;
        Page page;
        for (int pageId : id) {
            page = pageRepo.getOne(pageId);
            page.setSorting(count);
            pageRepo.save(page);
            count++;
        }
    }

但是使用斷點我可以看到id實際上是null ,因此請求處理程序顯然沒有獲取發送的ajax數據。

我在chrome中遇到的錯誤是:

error: "Internal Server Error"

我嘗試將@RequestBody添加到方法參數中,如下所示:

public void reorder(@RequestBody int[] id) {...

但是在這種情況下它甚至根本沒有觸及方法中的斷點,我在chrome中得到以下錯誤:

error: "Unsupported Media Type"

如果我不手動設置內容類型,我會得到以下請求有效負載

請求有效負載:

id[]=29&id[]=3

內容類型:

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

我可以將內容類型設置為json,但是我仍然遇到錯誤,我從來沒有在其他技術中這樣做,所以我懷疑這是問題所在。

由於有效負載是id[]=29&id[]=3 ,因此您需要

public void reorder(@RequestParam("id[]") int[] id) {

因為id[]是一個非標准的查詢參數名稱,不能從id方法參數名稱派生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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