JSON数据到数组

时间:2018-07-05 21:14:34

标签: javascript ajax asp.net-core-mvc

这是我的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

3 个答案:

答案 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)

在ajax中

添加data: JSON.stringifly(keys)可解决该问题。谢谢大家的帮助!