Jquery Ajax获取/发布相同的方法
我试图使用ajaxJquery Ajax获取/发布相同的方法,jquery,ajax,asp.net-mvc,Jquery,Ajax,Asp.net Mvc,我试图使用ajaxGet方法从我的控制器调用一个服务器方法,我在其中提供了数据。 方法接受参数并执行一些工作并返回一个列表。我想用同样的方法发帖子 当我尝试这样做时,我得到了未定义的错误 我的Get方法如下所示: $.ajax({ traditional:true, type: "GET", url: "/Graphs/chartData", data: { id: 0, WeatherAll: 0, paramSites: 0 }
Get
方法从我的控制器调用一个服务器方法,我在其中提供了数据。
方法接受参数并执行一些工作并返回一个列表。我想用同样的方法发帖子
当我尝试这样做时,我得到了未定义的错误
我的Get方法如下所示:
$.ajax({
traditional:true,
type: "GET",
url: "/Graphs/chartData",
data: { id: 0, WeatherAll: 0, paramSites: 0 },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
alert(r);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
我的Post方法有一些谷歌图表,如下所示:
google.load("visualization", "1", { packages: ["corechart"] });
google.setOnLoadCallback(drawChart);
function drawChart() {
var options = {
backgroundColor: 'transparent',
title: 'Humidity/Temperature Measure',
};
var idSite = $('#DDLSites').val();
var idWeatherALL = $('#DDLParameterWeatherAll').val();
var idParamSites = $('#DDLParameterWeatherSites').val();
$.ajax({
traditional: true,
type: "POST",
url: "/Graphs/chartData",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
alert(r);
var data = google.visualization.arrayToDataTable(r);
var options = {
title: 'Humidity/Temperature Measure for Site 1',
'backgroundColor': 'transparent',
vAxis: {
title: 'Temperature/Humidity',
},
hAxis: {
title: 'Time',
},
};
var chart = new google.visualization.AreaChart($("#chart")[0]);
chart.draw(data, options);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
}
我的ChartData方法是:
[AcceptVerbs("Get", "Post")]
public JsonResult chartData(int id, int WeatherAll,int paramSites)
{
string ids = Convert.ToString(id) + Convert.ToString(WeatherAll) + Convert.ToString(paramSites);
List<object> chartData = new List<object>();
chartData.Add(new object[]
{
"Date Time", "Temp", "Humidity"
});
////Some Code here
return Json(chartData);
}
[AcceptVerbs(“Get”、“Post”)]
公共JsonResult图表数据(int-id、int-WeatherAll、int-paramSites)
{
字符串id=Convert.ToString(id)+Convert.ToString(WeatherAll)+Convert.ToString(paramSites);
列表图表数据=新列表();
chartData.Add(新对象[]
{
“日期时间”、“温度”、“湿度”
});
////这里有一些代码
返回Json(图表数据);
}
我想不出我该怎么做。请告诉我任何方便的方法。谢谢下面是我的解决方案,我用AJAX调用创建了示例操作 让控制器动作-
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public JsonResult Data(int id, string s)
{
return Json("Test", JsonRequestBehavior.AllowGet);
}
<input type="button" value="GET" id="get" />
<input type="button" value="POST" id="post" />
@section scripts{
<script>
$(function() {
$("#get").click(function() {
$.ajax({
traditional: true,
type: "GET",
url: "/home/data",
data: { id: 2, s : 'Test'},
success: function (r) {
alert(r);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
});
$("#post").click(function () {
$.ajax({
traditional: true,
type: "POST",
url: "/home/data",
data: JSON.stringify({ id: 4, s: 'Test' }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
alert(r);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
});
})
</script>
}
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{s}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, s = UrlParameter.Optional }
);
让HTML中的按钮为-
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public JsonResult Data(int id, string s)
{
return Json("Test", JsonRequestBehavior.AllowGet);
}
<input type="button" value="GET" id="get" />
<input type="button" value="POST" id="post" />
@section scripts{
<script>
$(function() {
$("#get").click(function() {
$.ajax({
traditional: true,
type: "GET",
url: "/home/data",
data: { id: 2, s : 'Test'},
success: function (r) {
alert(r);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
});
$("#post").click(function () {
$.ajax({
traditional: true,
type: "POST",
url: "/home/data",
data: JSON.stringify({ id: 4, s: 'Test' }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
alert(r);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
});
})
</script>
}
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}/{s}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, s = UrlParameter.Optional }
);
当您使AJAX获得-
当你发表AJAX文章时-
对于GET方法,必须设置
JsonRequestBehavior.AllowGet
在控制器中
return Json(chartData, JsonRequestBehavior.AllowGet);
因此:
发布Ajax
$.ajax({
traditional:true,
type: "GET",
url: "/Graphs/chartData",
data: { id: 0, WeatherAll: 0, paramSites: 0 },
dataType: "json",
success: function (r) {
alert(r);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
$.ajax({
traditional: true,
type: "POST",
url: "/Graphs/chartData",
data: JSON.stringify({id: 0, WeatherAll: 0, paramSites: 0 }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
alert(r);
var data = google.visualization.arrayToDataTable(r);
var options = {
title: 'Humidity/Temperature Measure for Site 1',
'backgroundColor': 'transparent',
vAxis: {
title: 'Temperature/Humidity',
},
hAxis: {
title: 'Time',
},
};
var chart = new google.visualization.AreaChart($("#chart")[0]);
chart.draw(data, options);
},
failure: function (r) {
alert(r.d);
},
error: function (r) {
alert(r.d);
}
});
在ajax callsOkay的get和Post中,我可以重新表述:有72行代码存在问题。哪一行(或几行)会引发异常?@Regent在这两种方法中我都遇到了问题
错误:函数(r)
您检查过什么是Ajax错误了吗?中有有关传递到错误参数的信息。例如,我不知道提醒r
(即jqXHR
对象)的奇怪(很可能不存在)属性d
有什么意义。我通过Post ajax调用得到了“内部服务器错误”。BTW Get call成功并显示数据您在我的实现中遇到错误?在这段时间内,您试图执行JSON.Stringify()
?