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