Javascript object is passing to the controller as null object "Uncaught ReferenceError: data is not defined"
Javascript object is passing to the controller as null object "Uncaught ReferenceError: data is not defined"
我正在使用 asp.net 核心 3.0 开发 openstreetmap。我正在尝试从地图中获取纬度、经度等详细信息作为 javascript 对象并将其发送到控制器。为此,我实现了 AJAX 请求以将 javascript 对象传递给控制器。但是控制器接收到的对象值为空。我想知道我在哪里做错了。还是版本问题?下面是我的代码,
我的模型Class
public class LocationModel
{
public int LocationId { get; set; }
public string LocationName { get; set; }
public string Note { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
}
我的 Controller-Action 方法
[HttpPost]
public JsonResult Save(LocationModel details)
{
return Json(new { result = "OK"});
}
我的客户端代码
map.on('click', function (e) {
var name = window.prompt("Add Location Name:", "Text");
var note = window.prompt("Add Note:", "Text");
var latitude = e.latlng.lat;
var longitude = e.latlng.lng;
var locationdetails = { "LocationName": name, "Note": note, "Latitude": latitude, "Longitude": longitude };
console.log(locationdetails);
$.ajax({
type: "POST",
url: '/Home/Save',
contentType: "application/json",
dataType: "json",
data: JSON.stringify({details: locationdetails}),
success: function (response) {
alert(data);
},
error: function (xhr) {
console.log(xhr.responseText);
alert("Error has occurred..");
}
});
});
此处,locationdetails 变量包含我需要传递给控制器的所有详细信息。从 AJAX 电话,它不工作。如果有人可以指出我的错误,那就太好了。提前致谢!
好吧,C# 模型的键是大写的。 javascript 对象
var locationdetails = { "name": name, "note": note, "latitude": latitude, "longitude": longitude };
键是小写的。 C# 中间件映射器无法映射,它被解析为 null。尝试以下
var locationdetails = { "Name": name, "Note": note, "Latitude": latitude, "Longitude": longitude };
您可能缺少 locationId,因为我在任何地方都没有看到它。
你在 data
上使用 alert
,而你的参数在你的成功函数中是 response
——下面是错误的:
success: function (response) {
alert(data);
}
(编辑清楚)
以下应该有效:
success: function (response) {
alert(response);
}
the controller receives the value of the object as null.
要获得预期的数据,您可以修改如下代码。
jQueryAJAX代码
$.ajax({
//...
//other options
//...
data: JSON.stringify(locationdetails),
success: function (response) {
alert(response.result);
},
//...
});
控制器动作
[HttpPost]
public JsonResult Save([FromBody]LocationModel details)
{
return Json(new { result = "OK" });
}
测试结果
我正在使用 asp.net 核心 3.0 开发 openstreetmap。我正在尝试从地图中获取纬度、经度等详细信息作为 javascript 对象并将其发送到控制器。为此,我实现了 AJAX 请求以将 javascript 对象传递给控制器。但是控制器接收到的对象值为空。我想知道我在哪里做错了。还是版本问题?下面是我的代码,
我的模型Class
public class LocationModel
{
public int LocationId { get; set; }
public string LocationName { get; set; }
public string Note { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
}
我的 Controller-Action 方法
[HttpPost]
public JsonResult Save(LocationModel details)
{
return Json(new { result = "OK"});
}
我的客户端代码
map.on('click', function (e) {
var name = window.prompt("Add Location Name:", "Text");
var note = window.prompt("Add Note:", "Text");
var latitude = e.latlng.lat;
var longitude = e.latlng.lng;
var locationdetails = { "LocationName": name, "Note": note, "Latitude": latitude, "Longitude": longitude };
console.log(locationdetails);
$.ajax({
type: "POST",
url: '/Home/Save',
contentType: "application/json",
dataType: "json",
data: JSON.stringify({details: locationdetails}),
success: function (response) {
alert(data);
},
error: function (xhr) {
console.log(xhr.responseText);
alert("Error has occurred..");
}
});
});
此处,locationdetails 变量包含我需要传递给控制器的所有详细信息。从 AJAX 电话,它不工作。如果有人可以指出我的错误,那就太好了。提前致谢!
好吧,C# 模型的键是大写的。 javascript 对象
var locationdetails = { "name": name, "note": note, "latitude": latitude, "longitude": longitude };
键是小写的。 C# 中间件映射器无法映射,它被解析为 null。尝试以下
var locationdetails = { "Name": name, "Note": note, "Latitude": latitude, "Longitude": longitude };
您可能缺少 locationId,因为我在任何地方都没有看到它。
你在 data
上使用 alert
,而你的参数在你的成功函数中是 response
——下面是错误的:
success: function (response) {
alert(data);
}
(编辑清楚)
以下应该有效:
success: function (response) {
alert(response);
}
the controller receives the value of the object as null.
要获得预期的数据,您可以修改如下代码。
jQueryAJAX代码
$.ajax({
//...
//other options
//...
data: JSON.stringify(locationdetails),
success: function (response) {
alert(response.result);
},
//...
});
控制器动作
[HttpPost]
public JsonResult Save([FromBody]LocationModel details)
{
return Json(new { result = "OK" });
}
测试结果