1

这是我对这个问题的了解:

我们有一个 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;

但它不起作用。

所以我的问题是:有一个对象可以分配给“数据”参数,还是我被迫用连接构建字符串?

编辑==============

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

     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 回答