Javascript 将对象指定给';数据';以';美元表示的属性。ajax';jquery方法

Javascript 将对象指定给';数据';以';美元表示的属性。ajax';jquery方法,javascript,jquery,ajax,object,Javascript,Jquery,Ajax,Object,这就是我对这个问题的了解: 我们有一个ajax函数,可以向其传递具有如下属性的对象: var ajaxRequest = {}; ajaxRequest['type'] = 'POST'; ajaxRequest['async'] = false; ajaxRequest['datatype'] = 'json'; ajaxRequest['url'] = '/Query/getMydata'; $.ajax(ajaxRequest);

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

我们有一个ajax函数,可以向其传递具有如下属性的对象:

    var ajaxRequest = {};

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

    $.ajax(ajaxRequest);
    var oData = [];
    oData['color'] = 'yellow';
    oData['name'] = 'Fred';

    ajaxRequest['data'] = oData;
     var ajaxRequest = {
      type: 'POST',
      async: false
      ....
      };
    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);
    }
这些属性之一是由键/值对组成的数据参数:

    ajaxRequest['data'] = {color: 'red' , name: 'Steve' }
我试着这样做:

    var ajaxRequest = {};

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

    $.ajax(ajaxRequest);
    var oData = [];
    oData['color'] = 'yellow';
    oData['name'] = 'Fred';

    ajaxRequest['data'] = oData;
     var ajaxRequest = {
      type: 'POST',
      async: false
      ....
      };
    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);
    }
但它不起作用

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

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

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

    var ajaxRequest = {};

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

    $.ajax(ajaxRequest);
    var oData = [];
    oData['color'] = 'yellow';
    oData['name'] = 'Fred';

    ajaxRequest['data'] = oData;
     var ajaxRequest = {
      type: 'POST',
      async: false
      ....
      };
    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);
    }
但我使用对象和属性是因为我需要将方法设置为“泛型”,然后我将添加“if”,如下所示:

    var ajaxRequest = {};

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

    $.ajax(ajaxRequest);
    var oData = [];
    oData['color'] = 'yellow';
    oData['name'] = 'Fred';

    ajaxRequest['data'] = oData;
     var ajaxRequest = {
      type: 'POST',
      async: false
      ....
      };
    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);
    }

你的复杂方法完全没有必要。您应该只使用对象文字:

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
那样使用对象文字(
{}
),它会工作得很好。

您的复杂方法完全没有必要。您应该只使用对象文字:

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
那样使用对象文字(
{}
),它会工作得很好<代码>ajaxRequest['data']={color:'red',name:'Steve'}我写错了,对不起,不要把它变成字符串<代码>ajaxRequest['data']={color:'red',name:'Steve'}我写错了,对不起,我已经编辑了这个问题,以明确我想做什么。我知道你在回答的第一部分写了什么。我没有注意到我创建了一个数组而不是一个普通的对象,你回答的第二部分解决了我的问题!谢谢大家!@benVG很公平,但在对象文本中构造尽可能多的元素是有意义的,即常量元素。另外请注意,您可以执行
ajaxRequest.url='/Query/getMydata'
,例如保存字符和整理代码。我不知道这一点,它肯定会帮助我!我对问题进行了编辑,以明确我想做什么。我知道你在回答的第一部分写了什么。我没有注意到我创建了一个数组而不是一个普通的对象,你回答的第二部分解决了我的问题!谢谢大家!@benVG很公平,但在对象文本中构造尽可能多的元素是有意义的,即常量元素。另外请注意,您可以执行
ajaxRequest.url='/Query/getMydata'
,例如保存字符和整理代码。我不知道这一点,它肯定会帮助我!