【发布时间】:2018-07-05 21:14:34
【问题描述】:
这是我从 HTML 表单获取数据的 Javascript 函数。
$(function postProduct() {
$('#btn').click(function() {
var productName = document.getElementById("name").value;
var productDetail = document.getElementById("detail").value;
var productCategory = document.getElementById("category").value;
var dimensions = [productName, productDetail, productCategory];
var keys = $.map(dimensions, function(value, key) {
return value;
});
$.ajax({
type: "POST",
url: "api/product/addproduct",
data: keys,
success: function(result) {
alert('successful : ' + result);
return result;
},
error: function(error) {
alert("Not Working..");
}
});
}
});
});
这是我的控制器:
[HttpPost]
[Route("api/product/addproduct")]
public IActionResult AddProduct([FromBody] string[] addproduct)
{
var pProductName= addproduct[0];
var pProductDetail= addproduct[1];
var pProductCategory= addproduct[2];
Hotel NewProduct = new Product();
{
NewProduct.ProductName= pProductName;
NewProduct.ProductDetail= pProductDetail;
NewProduct.ProductCategory= pProductCategory;
}
_db.Products.Add(NewProduct);
_db.SaveChanges();
//create a new route for post method by id
return CreatedAtRoute(new { id = addproduct}, addproduct);
}
所以,我试图通过 AJAX 传递输入的表单并将其传递给控制器,但是,它只是失败了。
这是我用来将 json 数据转换为数组的函数:
var dimensions = [productName, productDetail, productCategory];
var keys = $.map(dimensions, function(value, key) {
return value;
});
或者我应该重新编码我的控制器以接受 json 数据。如果是这样,请给我一个这样做的例子。抱歉,我是 web api 的新手。
更新: 这是我的 jsondata:
productName: name
productDeatil: detail
productCategory:category
这是我的数组:
keys:(7) ["name", "detail", "category"]
【问题讨论】:
-
你的 JSON 示例怎么样?
-
对 Asp.net Core 完全不熟悉,但可能是您没有在控制器中以 JSON 格式获取数据(您以 JSON 格式发送,但您从正文中读取错误方式。也许检查一下?andrewlock.net/model-binding-json-posts-in-asp-net-core
标签: javascript ajax asp.net-core-mvc