请求不与 jQuery 中的 `$.ajax` 一起调用
Request not going with `$.ajax` call in jQuery
我需要使用 jQuery 进行 ajax 调用,并且需要根据 if/else
条件的结果传递不同的 ajax 选项。
我是这样试的:
var url = 'form_submission.php';
if (imgAttached) {
var params = $form.serializeArray(),
formData = new FormData(),
files = $form.find('[name="images"]')[0].files;
$.each(files, function(i, file) {
formData.append('images-' + i, file);
});
$.each(params, function(i, val) {
formData.append(val.name, val.value);
});
var ajaxOptions = " url:"+url
ajaxOptions += ",type:"+'post'
ajaxOptions += ",data:"+formData
ajaxOptions += ",cache:"+false
ajaxOptions += ",contentType:"+false
ajaxOptions += ",processData:"+false;
} else {
var formData = $form.serialize();
var ajaxOptions = " url:"+url
ajaxOptions += ",type:"+'post'
ajaxOptions += ",data:"+formData;
}
这就是我从外部调用 ajax 请求的方式 if/else
:
$.ajax({
ajaxOptions,
beforeSend: function() {},
success: function(json) {}
)}
我的问题是请求不符合 ajaxOptions
并且当我尝试使用标准方式时它的工作。谁能告诉我这里的问题是什么?
$.ajax()
函数接受一个 对象 作为参数,即它应该有 键值对 .
这里,在$.ajax({ ajaxOptions, .....})
中,ajaxOptions
是一个字符串拼接而成,而不是键值对.
预计
url: 'form_submission.php',
method: 'POST'
实际
"url: 'form_submission.php', method: 'POST'"
要解决此问题,请创建一个 ajaxOptions
对象并通过使用 spread 运算符提取属性将其传递给 $.ajax()
函数。
if (imgAttached) {
.
.
.
const ajaxOptions = {
url: url,
type: "POST",
data: formData,
cache: false,
contentType: false,
processData: false,
};
} else {
.
.
.
const ajaxOptions = {
url: url,
type: "POST",
data: formData,
};
}
$.ajax({
...ajaxOptions,
beforeSend: function() {},
success: function(json) {}
)}
我需要使用 jQuery 进行 ajax 调用,并且需要根据 if/else
条件的结果传递不同的 ajax 选项。
我是这样试的:
var url = 'form_submission.php';
if (imgAttached) {
var params = $form.serializeArray(),
formData = new FormData(),
files = $form.find('[name="images"]')[0].files;
$.each(files, function(i, file) {
formData.append('images-' + i, file);
});
$.each(params, function(i, val) {
formData.append(val.name, val.value);
});
var ajaxOptions = " url:"+url
ajaxOptions += ",type:"+'post'
ajaxOptions += ",data:"+formData
ajaxOptions += ",cache:"+false
ajaxOptions += ",contentType:"+false
ajaxOptions += ",processData:"+false;
} else {
var formData = $form.serialize();
var ajaxOptions = " url:"+url
ajaxOptions += ",type:"+'post'
ajaxOptions += ",data:"+formData;
}
这就是我从外部调用 ajax 请求的方式 if/else
:
$.ajax({
ajaxOptions,
beforeSend: function() {},
success: function(json) {}
)}
我的问题是请求不符合 ajaxOptions
并且当我尝试使用标准方式时它的工作。谁能告诉我这里的问题是什么?
$.ajax()
函数接受一个 对象 作为参数,即它应该有 键值对 .
这里,在$.ajax({ ajaxOptions, .....})
中,ajaxOptions
是一个字符串拼接而成,而不是键值对.
预计
url: 'form_submission.php',
method: 'POST'
实际
"url: 'form_submission.php', method: 'POST'"
要解决此问题,请创建一个 ajaxOptions
对象并通过使用 spread 运算符提取属性将其传递给 $.ajax()
函数。
if (imgAttached) {
.
.
.
const ajaxOptions = {
url: url,
type: "POST",
data: formData,
cache: false,
contentType: false,
processData: false,
};
} else {
.
.
.
const ajaxOptions = {
url: url,
type: "POST",
data: formData,
};
}
$.ajax({
...ajaxOptions,
beforeSend: function() {},
success: function(json) {}
)}