2

私は次のような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になることです。どこが間違っているのか教えてください。

4

3 に答える 3

16

送信するデータの名前を定義する必要があります 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ステートメントは''を返します。

于 2012-12-20T10:50:38.830 に答える
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;
             }
         });
于 2012-12-20T10:47:59.550 に答える
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;
};
于 2012-12-20T10:48:06.307 に答える