Javascript 带路由控制器的HttpPut
您好,我需要一些帮助我正在尝试使用ajax向控制器发送一些数据,使用PUT方法进行更新这里是javascript和ajax代码:Javascript 带路由控制器的HttpPut,javascript,c#,.net,ajax,asp.net-mvc,Javascript,C#,.net,Ajax,Asp.net Mvc,您好,我需要一些帮助我正在尝试使用ajax向控制器发送一些数据,使用PUT方法进行更新这里是javascript和ajax代码: function UpdateProduct() { var id = location.pathname.split('/')[2]; var product = { Name: $("#txtName").val(), Description: $("#txtDescription").val(), Price: $("#txtPrice
function UpdateProduct() {
var id = location.pathname.split('/')[2];
var product = {
Name: $("#txtName").val(),
Description: $("#txtDescription").val(),
Price: $("#txtPrice").val(),
SubCategoryId: $("#txtSubCategoryId").val(),
CompanyId: $("#txtSubCategoryId").val(
ProductCode: $("#ProductCode").val(
Barcode: $("#Barcode").val(
Brand: $("#txtBrand").val(),
Material: $("#txtMaterial").val(),
Date: $("#txtDate").val(),
};
$.ajax({
url: "/UpdateProduct/"+id,
type: "PUT",
dataType: "json",
data: product,
success: function (result) {
alert('Successful');
},
error: function (e) {
alert(e.error);
}
});
})
和我的控制器代码:
[HttpPut]
[Route("UpdateProduct/{id}")]
public void UpdateProduct(int id, ProductsBE product)
{
var api = ConfigurationManager.AppSettings["apiUrl"];
var productsById = new ProductsRep();
var searchResponse = productsById.UpdateProduct(product,id, api);
}
API正在工作,因为我已经用postman对它进行了测试。您必须使用
JSON.stringify
将您的对象产品
转换为JSON
字符串
$.ajax({
url: "/UpdateProduct/"+id,
type: "PUT",
dataType: "json",
data: JSON.stringify(product),
success: function (result) {
alert('Successful');
},
error: function (e) {
alert(e.error);
}
});
看起来你甚至没有亲自调试过,因为你几乎没有给我们任何信息。。。。例如,当您执行javascript时,浏览器是否尝试发送请求?浏览器请求了什么Url?请求的post正文的格式是否正确?等等。给我们一个浏览器用javascript发送的请求的例子,并找出它与邮递员请求的不同之处。那么你是否得到了空值?ajax甚至没有调用控制器,它只是提醒错误消息。。。url是正确的,因为我也用以下代码对其进行了测试:complete:function(){alert(this.url)},很明显,给我们那个错误消息。下面是我从警报中得到的错误:你能通过按f12和在网络选项卡中检查响应吗