簡體   English   中英

Ajax向控制器發送空字符串?

[英]Ajax sending null string to controller?

我正在使用ajax調用嘗試向我的控制器發送字符串,但它返回null

我的控制器

[HttpPost]
public async Task<string> CreateCarouselItem(string itemText){
    var newItem = new CarouselItem(itemText);
    await CarouselHelper.AddAndSaveAsync(newItem, _context);

    return itemText;
}

和我的JavaScript

function FinishUp()
{
editor.disable();
var boxText = editor.getText();

$.ajax({
    type: "POST",
    url: '/Home/CreateCarouselItem',
    dataType: "text",
    data: { boxText },
    traditional: true,
    success: function (data) {
        console.log(data);
    },
    error: console.log("it did not work"),
});

}

dataType選項定義了預期的響應類型,而不是您要發送的數據的類型。 為此,您需要contentType ,它需要一個實際的mime類型,即text/plain而不只是“ text”。

然后,您要發送一個對象而不是字符串。 如果只需要字符串,則應該只有:

data: boxText

(不帶花括號)

最后,在您的操作中,默認綁定類型是x-www-form-urlencoded ,它需要一個鍵值對。 您可以再次將data更改為:

data: 'itemText=' + boxText

或者,您也可以從身體上綁定:

public async Task<string> CreateCarouselItem([FromBody]string itemText)

但是,為此,我相信您還需要在啟動時啟用文本序列化程序:

services.AddMvc(o =>
{
    o.InputFormatters.Add(new TextInputFormatter());
});

您將在操作參數上收到的參數名稱為itemText ,然后需要將數據配置為data: {itemText: boxText } ajax中的data: {itemText: boxText }以綁定itemText

$.ajax({
        type: "POST",
        url: '/Home/CreateCarouselItem',
        dataType: "text",
        data: {itemText: boxText },
        traditional: true,
        success: function (data) {
            console.log(data);
        },
        error: console.log("it did not work"),
    });

暫無
暫無

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

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