在jquery的'$ .ajax'方法中将对象分配给'data'属性

时间:2013-02-01 15:56:44

标签: javascript jquery ajax object

这就是我所知道的:

我们有一个ajax函数,我们可以使用这样的属性传递一个对象:

    var ajaxRequest = {};

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

    $.ajax(ajaxRequest);

其中一个属性是数据参数,它由键/值对组成:

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

我试着这样做:

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

    ajaxRequest['data'] = oData;

但它不起作用。

所以我的问题是:有一个对象我可以分配给'data'参数,或者我被迫用串联构建字符串?

EDIT ==============

也许我没有解释,我知道这个方法可以通过以下代码创建:

     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);
    }

1 个答案:

答案 0 :(得分: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),它就可以正常工作。