这就是我所知道的:
我们有一个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);
}
答案 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
),它就可以正常工作。