Jquery Ajax获取/发布相同的方法

Jquery 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 }

我试图使用ajax
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()