使用jQuery的AJAX调用将字符串参数发送到控制器

时间:2012-12-20 10:42:05

标签: jquery

我有一个类似

的ajax调用
this.GetTransactionsInputToday = function () {
             var status="complete"
             $.ajax({
                 url: '/Management/function1',
                 contentType: "application/json; charset=utf-8",
                 data: status,
                 type: 'GET',
                 cache: false,
                 success: function (result) {
                     return result;
                 }
             });
         }

我也试过这样做

this.GetTransactionsInputToday = function () {
             var status="complete"; 
              $.ajax({
                     url: '/Management/function1/' + status,
                     type: 'GET',
                     cache: false,
                     success: function (result) {
                         return result;
                     }
                 });
             }

我的管理控制器类中有一个控制器功能

public JsonResult function1(string status)
{
Some code here.. 
}

问题是每次调用function1时,status的值都为null。 请问任何人,请告诉我哪里出错了?

3 个答案:

答案 0 :(得分:12)

您需要为发送的数据data: {'status': status}定义名称:

this.GetTransactionsInputToday = function () {
    var status="complete"
    var r = '';

    $.ajax({
        url: '/Management/function1',
        contentType: "application/json; charset=utf-8",
        data: {'status': status},
        type: 'GET',
        cache: false,
        success: function (result) {
            r = result;
        }
    });

    return r;
};

此外,您的this.GetTransactionsInputToday也不会按预期返回结果。 ajax函数的成功处理程序被异步调用。因此,在Ajax请求完成之前调用它时,return r语句将返回''

答案 1 :(得分:2)

您可能错误地构造了json参数。

使用json: data: "{'prop1': '" + value1+ "'}"

$.ajax({
             url: '/Management/function1',
             contentType: "application/json; charset=utf-8",
             data: "{'prop1': '" + value1+ "'}",
             type: 'GET',
             cache: false,
             success: function (result) {
                 return result;
             }
         });

答案 2 :(得分:0)

尝试在ajax函数之外设置变量然后返回它,这样它就在正确的范围内。另外,为了获得立即值,您需要使此ajax调用同步。

this.GetTransactionsInputToday = function () {
    var status = "complete";
    var r = '';

    $.ajax({
        async : false,
        url: '/Management/function1',
        contentType: "application/json; charset=utf-8",
        data: {'status' : status},
        type: 'GET',
        cache: false,
        success: function (result) {
            r = result;
        }
    });

    return r;
};