繁体   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