无法通过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时似乎出错了,因为它仍然是空的。
有什么想法吗?
答案 0 :(得分:0)
您根本不需要任何formData。
只需data
params
var request = $.ajax({
method: 'post',
url: url,
data: params,
...
});
Jquery将自动完成所有必要的工作。
答案 1 :(得分:0)
您不需要.each
函数来创建另一个数组,通过拆分字符串,您已经为变量cast
创建了一个数组。您的ajax方法看起来正确但可以使用请求体完成,在这种情况下您不一定需要FormData。 FormData主要用于文件上传。
对于错误处理程序,建议使用err
或error
之类的内容作为回调值,它为您自己和其他人提供了更多的可读性。
我分叉你的小提琴并对代码做了一些修改:
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