簡體   English   中英

Ajax 請求:未將 Json 數據傳遞給控制器

[英]Ajax Request: Json Data Not Being Passed to Controller

我正在構建一個在 ASP.NET Core 中搜索文檔的程序。 我通過 Ajax 請求將搜索數據從文本框傳遞到控制器,但控制器沒有接收到字符串。

我嘗試更改 ajaxData 字段的定義方式,在“搜索”周圍添加引號,甚至將整個內容轉換為字符串,但我無法將其傳遞給控制器​​。

這是請求的代碼:

ajaxData = {search: $("#textSearchBox").val()}

console.log(ajaxData);

$.ajax({
    type: 'POST',
    url: "@Url.Action("GetDocuments", "DocumentSearchApi")",
    data: ajaxData,
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    error: function (e) {
        //Error Function
    },
    success: function (jsonData) {
        //Success Function
    },
    fail: function (data) {
        //Fail Function
    }
});

這是 Controller 的 GetDocuments 函數的頂部:

[Route("GetDocuments")]
public async Task<IActionResult> GetDocuments(string search)
{

任何地方都沒有錯誤消息。 控制台顯示一個包含“搜索:“測試”的對象,但是當我在 GetDocuments 中找到斷點時,“搜索”為空。

我認為在這種情況下使用 GET 的方式更優雅,那么您應該將代碼更改為

var ajaxData = $("#textSearchBox").val();
url: "@Url.Action("GetDocuments", "DocumentSearchApi")"?search=ajaxData 

並刪除數據:ajaxData

因為你想從搜索中得到一些東西。 使用 post 是當您想從 API 修改數據時

將數據發送到 Web 服務器時需要使用 JSON.stringify(),數據必須是字符串而不是對象

$.ajax({
    type: 'POST',
    url: "@Url.Action("GetDocuments", "DocumentSearchApi")",
    data: JSON.stringify(ajaxData),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    error: function (e) {
        //Error Function
    },
    success: function (jsonData) {
        //Success Function
    },
    fail: function (data) {
        //Fail Function
    }
});

暫無
暫無

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

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