Ajax不会使用GET将数据传递给方法

时间:2014-03-27 08:34:23

标签: javascript jquery ajax asp.net-mvc

我有一个使用Get

加入的方法
[HttpGet]
[AdminAuthorization]
public ActionResult MakeReservation(ReservationModel m)
{

    return PartialView(m);
}

这里是Ajax代码:

$.ajax({
        url: "/DeviceUsage/MakeReservation",
        type: "GET",
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify({ data: Ids }),
        error: function (data) {
            alert("Dodanie  nie powiodło się  Jeden lub wiecej numerów seryjnych nie są unikalne " + data);
        },
        success: function (data) {
            $('#ProperModal.modal-body').html(data);
            $("#Modal").modal('show');
            //if (data === "sukces") {

        }
    });

如果我将方法描述和ajax类型更改为POST函数有效。我应该如何修改此代码以使其与GET调用一起使用?

3 个答案:

答案 0 :(得分:2)

您需要在控制器中使用JsonRequestBehavior.AllowGet。有关详细信息,请阅读this answer on SO

我认为在你的动作中返回Json(不是PartialView)是很好的做法(对于ajax)。如果要返回PartialView,可以使用this technique

答案 1 :(得分:1)

您不需要明确地告诉HttpGet,默认情况下,它会将其视为HttpGet,但如果您设置了HttpPost属性,那么它就不起作用获取请求。

Jquery ajax的情况也是如此,如果你不告诉它,它的get或post请求,默认情况下会向服务器发出get请求

答案 2 :(得分:0)

删除contentType和dataType:'json'(这表示您正在返回json,但您的代码返回部分视图)。并删除JSON.stringify作为jQuery直接接受您的JS对象。没有测试过,但它应该可以工作。