所以,我有以下js函数:
var name_list = names; //mike,steve,sean,roger
jQuery.ajax({
type: "GET",
url: custom.ajax_url,
dataType: 'html',
data: ({ action: 'some_function', name_list:name_list}),
success: function(data){
alert('success')
});
这里有一个变量,它包含一系列值("迈克,史蒂夫,肖恩,罗杰和#34;用逗号分开)。
现在,我想使用第一个值来调用ajax(name_list = mike),一旦完成,我想用第二个值(name_list = steve)重复相同的ajax调用。
这是我的问题。
如何在变量中使用单个值,并在函数(ajax调用)成功时仅使用后续值?
谢谢!
答案 0 :(得分:1)
只是尝试用你想要的ajax创建一个函数并传递值和 成功之后再次运行ajax,直到达到最后一段时间 你的阵列
var name_list = names.split(','); //mike,steve,sean,roger
var repeat_Ajax = function(i){
jQuery.ajax({
type: "GET",
url: custom.ajax_url,
dataType: 'html',
data: { action: 'some_function', name_list:name_list[i]}, // no need for `( )` here
success: function(data){
if(i !== name_list.length){
repeat_Ajax(i+1);
alert('success');
}
});
}
repeat_Ajax(0);
未经测试的代码,但我希望它能与您合作
答案 1 :(得分:1)
这是一种方法:
var name_list = ['mike','steve','sean','roger'];
function recursive(list, done) {
list = list.slice();
(function next() {
var name = list.shift();
jQuery.ajax({
type: "GET",
url: 'url',
dataType: 'html',
data: ({ action: 'some_function', name : name }),
success: function(data) {
console.log('success', name);
}
}).then(list.length ? next : done);
}());
}
recursive(name_list, function() {
console.log('all done');
});
答案 2 :(得分:1)
我添加了一个按钮来演示它是否有效,使用控制台进行观察。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>SerialArrayFeed</title>
</head>
<body>
<button id="btn">Feed</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
jQuery.ajax({
type: "GET",
url: "_custom.ajax.url",
dataType: "html",
data: ({
action: serialArrayFeed,
names: arr
}),
success: function(data) {
if (data != undefined) {
alert('success');
}
}
});
var arr = ['mike', 'steve', 'sean', 'roger'];
var qty = arr.length;
function serialArrayFeed(arr) {
for (var i = 0; i < qty; i++) {
var next = arr.pop(i);
break;
return next;
}
console.log('arr: ' + arr + ' next: ' + next);
}
var btn = document.getElementById('btn');
btn.addEventListener('click', function(event) {
serialArrayFeed(arr);
}, false);
</script>
</body>
</html>
&#13;