1

これは私がこの主題について知っていることです:

次のようなプロパティを持つオブジェクトを渡すことができるajax関数があります。

    var ajaxRequest = {};

    ajaxRequest['type'] = 'POST';
    ajaxRequest['async'] = false;
    ajaxRequest['datatype'] = 'json';
    ajaxRequest['url'] = '/Query/getMydata';

    $.ajax(ajaxRequest);

これらのプロパティの1つは、キーと値のペアで構成されるデータパラメータです。

    ajaxRequest['data'] = {color: 'red' , name: 'Steve' }

私はこのようなことをしようとしました:

    var oData = [];
    oData['color'] = 'yellow';
    oData['name'] = 'Fred';

    ajaxRequest['data'] = oData;

しかし、それは機能しません。

だから私の質問は:'data'パラメータに割り当てることができるオブジェクトがありますか、それとも連結で文字列を構築することを余儀なくされていますか?

編集==============

説明しなかったかもしれませんが、メソッドは次のようなコードで作成できることを知っています。

     var ajaxRequest = {
      type: 'POST',
      async: false
      ....
      };

しかし、メソッドを「ジェネリック」にする必要があるため、オブジェクトとプロパティを使用しています。次に、次のように「if」を追加します。

    function ajaxReq(data){
         var ajaxRequest = {};

         if( !data.isEmpty()){
             ajaxRequest['data'] = data;
         }

           ajaxRequest['type'] = 'POST';
           ajaxRequest['async'] = false;
           ajaxRequest['datatype'] = 'json';
           ajaxRequest['url'] = '/Query/getMydata';

           ...

           $.ajax(ajaxRequest);
    }
4

1 に答える 1

5

あなたの複雑な方法は完全に不要です。オブジェクトリテラルを使用する必要があります。

var ajaxRequest = {
    type: 'POST',
    async: false
    datatype: 'json',
    url: '/Query/getMydata'
};

$.ajax(ajaxRequest);

それらをネストすることもできるので、次のようにすることができます。

var ajaxRequest = {
    type: 'POST',
    async: false
    datatype: 'json',
    url: '/Query/getMydata',
    data: {
        color: 'yellow',
        name: 'Fred'
    }
};

jQueryはこれをクエリ文字列に変換するので、心配する必要はありません。


追加の説明...oData = []問題を引き起こしている理由[]は、配列を作成することです。Javascriptでは、配列は特別な種類のオブジェクトです。数値キーを持つプロパティのみが配列のメンバーと見なされます(例oData[1])。と同じようにオブジェクトリテラル({})を使用した場合は、正常に機能しajaxRequestます。

于 2013-02-01T16:01:30.313 に答える