使用ASP.NET内核的Ajax
我正在进行一个项目,需要在服务器端使用ASP.NET核心将一些数据发送到我的SQL Server。 在客户端,我使用Javascript运行我的应用程序,该应用程序向我发送需要保存的对象数组。 因此,我认为使用Ajax将数据发送到我的控制器,然后再发送到我的服务器(使用EF)可能是一个好主意。 问题是我甚至不能发送这样的字符串:使用ASP.NET内核的Ajax,ajax,asp.net-core,Ajax,Asp.net Core,我正在进行一个项目,需要在服务器端使用ASP.NET核心将一些数据发送到我的SQL Server。 在客户端,我使用Javascript运行我的应用程序,该应用程序向我发送需要保存的对象数组。 因此,我认为使用Ajax将数据发送到我的控制器,然后再发送到我的服务器(使用EF)可能是一个好主意。 问题是我甚至不能发送这样的字符串:var x=“first try”发送到我的控制器,因为我有以下错误(400):解析XML时出错:未找到元素。 我尝试了多种方法,比如删除datatype:'text'或
var x=“first try”代码>发送到我的控制器,因为我有以下错误(400):解析XML时出错:未找到元素
。
我尝试了多种方法,比如删除datatype:'text'
或datatype:'json'
或强制MIMETYPE
到text
以下是我所做的:
视图:
function save (){
var jsonStringify = JSON.stringify({value : "yo"});
$.ajax({
type : 'POST',
url : "@Url.Action("saveChart")",
data : {"jsonData" : jsonStringify},
datatype : "text"
});
}
我已经尝试更改数据类型,Url。控制器的我的路径=我的网站/HomeController/saveChart
控制器:
[HttpPost]
public IActionResult saveChart(string jsonData){
ChartClass chart = new ChartClass();
int nbr = _connection.Chart.Count();
chart.value = "check connection controler";
chart.id = nbr + 1;
this._connection.Chart.Add(chart);
this_connection.SaveChanges();
return View("Views/Home/Chart.cshtml");
}
我试着把[FromBody]
放进去,但还是什么都没有
型号:
public class ChartClass(){
[Key]
public int id {get; set;}
public string valeur {get; set;}
}
但是我可以使用html表单访问我的数据库,从而访问我的控制器,该表单带有asp action=“saveChart”asp controller=“Home”
默认的contentType
将是application/x-www-form-urlencoded;charset=UTF-8
,要向您的saveChart
操作方法发出带有已发布数据的Ajax请求,您可以尝试:
$.ajax({
type: 'POST',
url: "@Url.Action("saveChart")",
data: {
"jsonData": "yo"
},
datatype: "text"
//...
测试结果
您似乎没有在操作代码逻辑中使用参数jsonData
。那么代码只是为了测试吗?是的,我只是想知道我的Ajax调用是否可以运行。它通过在我的Ajax调用中添加(我必须):beforeSend:function(xhr){xhr.setRequestHeader(“RequestVerificationToken”),$('input:hidden[name=“\uu RequestVerificationToken”]”).val()}
。和我的控制器中的[ValidateAntiForgeryToken]
。但是现在,如果我离开ContentType:'application/json',我的jsonData将为null。为什么?我发送的json不是带有数据:{“jasonData”:“yo”}
?可以防止CSRF攻击,如果令牌无效,这可能会导致HTTP 400错误,它不应该导致模型绑定错误。如果我离开ContentType:'application/json',我的jsonData为null。为什么?
数据将通过请求正文传递,您可以尝试将[FromBody]
属性应用于参数saveChart([FromBody]string jsonData)
。并使用data:JSON.stringify(“yo”)
.Hi@Crakenar修改ajax数据选项。如果解决方案确实有助于解决问题,请接受它作为答案。