将JavaScript数组转换为formData

时间:2018-05-01 01:06:27

标签: javascript arrays ajax

无法通过Ajax将数组传递给PHP。

请看jsfiddle https://jsfiddle.net/CraigDavison/9spyn7ah/

 function autoPopulate() {
   var cast = "John Wayne, Julia Roberts, Kevin Spacey";
   cast = cast.split(', ');
   var arr_cast = [];

   $.each(cast, function() {
      arr_cast.push(this);
   });
   return_ajax_result('app/handlers/get_cast_ids.php', {cast: arr_cast});
}

我已经从字符串创建了一个数组。字符串是电影中的演员列表。我想通过与“演员”相关联的数组传递演员列表,所以施放= [演员1,演员2,演员3]。

当我尝试将此附加到formData时似乎出错了,因为它仍然是空的。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您根本不需要任何formData。

只需data

即可params
  var request = $.ajax({
    method: 'post',
    url: url,
    data: params,
    ...
  });

Jquery将自动完成所有必要的工作。

答案 1 :(得分:0)

您不需要.each函数来创建另一个数组,通过拆分字符串,您已经为变量cast创建了一个数组。您的ajax方法看起来正确但可以使用请求体完成,在这种情况下您不一定需要FormData。 FormData主要用于文件上传。

对于错误处理程序,建议使用errerror之类的内容作为回调值,它为您自己和其他人提供了更多的可读性。

我分叉你的小提琴并对代码做了一些修改:

function autoPopulate() {
  var cast = "John Wayne, Julia Roberts, Kevin Spacey";
  cast = cast.split(', ');
  return_ajax_result('app/handlers/get_cast_ids.php', {cast});
}

function return_ajax_result(url, params) {
  var request = $.ajax({
    method: 'post',
    url: url,
    data: params,
    beforeSend: function() {
      $(".ng-loading-container").addClass("ng-loading-container-show");
    },
    success: function(result) {
      console.log(result);
    },
    error: function(err) {
      console.log(err);
    },
  });
};

autoPopulate()

这个小提琴可以在这里找到:fiddle