是否可以将函数放入 Jquery Ajax 的参数中,如下所示。 dataType 和 data 作为函数给出。如果返回类型为 JSON,则 dataType 返回 JSON 值;如果 isJson 为 false,则返回文本。
dataVal 和 dataVar 是包含用于构造数据参数的参数名称和值的数组。 data: 函数的结果将是一个字符串,如下所示:
{dataVar[0]:dataVal[0],dataVar[1]:dataVal[1],.....,}
当我尝试这个时出现错误,所以,只是想知道这个方法是否可行。
function getAjaxResponse(page, isJson, dataVar, dataVal, dfd) {
$.ajax(page, {
type: 'POST',
dataType: function () {
if (isJson == true) {
return "JSON";
} else {
return "text";
}
},
data: function () {
var dataString = '{';
for (var i = 0; i < dataVar.length; i++) {
dataString = dataString + dataVar[i] + ':' + dataVal[i] + ',';
}
console.log(dataString);
return dataString + '}';
},
success: function (res) {
dfd.resolve(res);
}
});
}
Edit
根据答案和评论,进行了更改。更新后的功能如下。这有效:
function getAjaxResponse(page, isJson, dataVar, dataVal, dfd) {
$.ajax(page, {
type: 'POST',
dataType: isJson ? "JSON" : "text",
data: function () {
var dataString ="";
for (var i = 0; i < dataVar.length; i++) {
if (i == dataVar.length - 1) {
dataString = dataString + dataVar[i] + '=' + dataVal[i];
} else {
dataString = dataString + dataVar[i] + '=' + dataVal[i] + ',';
}
}
return dataString;
}(),
success: function (res) {
dfd.resolve(res);
}
});
}
我原来的问题得到了解答。但显然,数据并没有被接受。
data 函数的返回值仅被视为参数名称,jquery 只是在请求末尾添加一个 : ,如下所示:
{dataVar[0]:dataVal[0]}:
因此,我的服务器无法获取正确的参数名称。