这是我的Javascript函数,可从HTML表单获取数据。
sub_array_end()
这是我的控制者:
$(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..");
}
});
}
});
});
因此,我试图传递输入的表单,并通过AJAX将其传递给控制器,但是,它只是失败了。
这是我用来将json数据制作为数组的函数:
[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);
}
或者我应该重新编码我的控制器以接受json数据。如果是这样,请给我一个例子。抱歉,我是Web API的新手。
更新: 这是我的jsondata:
var dimensions = [productName, productDetail, productCategory];
var keys = $.map(dimensions, function(value, key) {
return value;
});
这是我的数组:
productName: name
productDeatil: detail
productCategory:category
答案 0 :(得分:0)
NewProduct和.ProductName之类的属性之间是否有间距?
NewProduct .ProductName = pProductName;
应该不是这样吗?
Hotel NewProduct = new Product();
NewProduct.ProductName = pProductName;
NewProduct.ProductDetail = pProductDetail;
NewProduct.ProductCategory = pProductCategory;
通过简化的对象创建:
Hotel NewProduct = new Product() {
ProductName= pProductName,
ProductDetail= pProductDetail,
ProductCategory= pProductCategory
};
答案 1 :(得分:0)
在您的Ajax请求中,将数据密钥分配给以下值...
{ productName: document.getElementById("name").value, productDetail: document.getElementById("detail").value, productCategory: document.getElementById("category").value }
这是典型的JSON格式对象。
然后您还可以删除变量分配和map函数。
最后,您需要研究如何在控制器中处理此格式化的JSON。
我不确定如何在asp.net-core-mvc中进行此操作,但这可能就像更改一样简单
var pProductName= addproduct[0];
到
var pProductName= addproduct.productName
答案 2 :(得分:0)
添加data: JSON.stringifly(keys)
可解决该问题。谢谢大家的帮助!