请求不与 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) {}
)}