jQuery,如何只用 ajax 遍历一个数组一次
jQuery, how to loop through an array with ajax only once
我有这个 jQuery
函数,它从 wp_localize_script
声明中读取值。
<script type='text/javascript'>
/* <![CDATA[ */
var assjs = {"action":"get_ass_counts","path":"http:\/\/localhost\/wordpress-dev\/wp-content\/plugins\/advanced-social-status","_wpnonce":"2f3686b7ca","networks":"fblike,fbshare","ajax_url":"http:\/\/localhost\/wordpress-dev\/wp-admin\/admin-ajax.php"};
/* ]]> */
</script>
我最感兴趣的查询部分是 "networks":"fblike,fbshare"
在单独的 JavaScript 文件中我有这个函数:
AJAX 脚本
$('.advanced-social-status form').on('submit', function(e) {
e.preventDefault();
// Array of social networks
var social_networks = [assjs.networks];
// cancel previous requests
if (asswxhr) asswxhr.abort();
$.each(social_networks, function(key){
asswxhr = $.ajax({
type: "POST",
url: assjs.ajax_url,
data:{
action: assjs.action,
_wpnonce: assjs._wpnonce,
network: social_networks,
},
success: function(data) {
console.log(data);
$results.html(data);
},
beforeSend: function() {
$(".ass-fbshare").html('<img style="margin-left:50px;" src="'+assjs.path+'/images/ajax-loader.gif" />');
}
});
});
return false;
});
我想要实现的是为 "networks":"fblike,fbshare"
获取每个单独的社交网络功能,我在 jQuery 中将其引用为 assjs.networks
并循环处理它一次。
目前,它将两个社交网络对象发布到我的 PHP 脚本,该脚本处理 ajax 请求。
PHP 脚本
$socialnetwork = trim(stripslashes($_POST['network']));
如果我 var_dump($_POST);
在我的 PHP 处理脚本中,我会得到这些结果:
array(4) {
["action"]=>;
string(14) "get_ass_counts"
["_wpnonce"]=>;
string(10) "2f3686b7ca"
["network"]=>;
array(1) {
[0]=>;
string(14) "fblike,fbshare"
}
["s"]=>;
string(0) ""
}
有没有一种方法可以分离或分解 jQuery
文件中的社交网络名称,以便它只传递每个社交网络名称一次?
谢谢
你可以用split来代替
var social_networks = [assjs.networks];
social_networks = social_networks.split(',');
这不是进行多次 ajax 调用的最佳方法,请考虑 Geohut 的建议。
我有这个 jQuery
函数,它从 wp_localize_script
声明中读取值。
<script type='text/javascript'>
/* <![CDATA[ */
var assjs = {"action":"get_ass_counts","path":"http:\/\/localhost\/wordpress-dev\/wp-content\/plugins\/advanced-social-status","_wpnonce":"2f3686b7ca","networks":"fblike,fbshare","ajax_url":"http:\/\/localhost\/wordpress-dev\/wp-admin\/admin-ajax.php"};
/* ]]> */
</script>
我最感兴趣的查询部分是 "networks":"fblike,fbshare"
在单独的 JavaScript 文件中我有这个函数:
AJAX 脚本
$('.advanced-social-status form').on('submit', function(e) {
e.preventDefault();
// Array of social networks
var social_networks = [assjs.networks];
// cancel previous requests
if (asswxhr) asswxhr.abort();
$.each(social_networks, function(key){
asswxhr = $.ajax({
type: "POST",
url: assjs.ajax_url,
data:{
action: assjs.action,
_wpnonce: assjs._wpnonce,
network: social_networks,
},
success: function(data) {
console.log(data);
$results.html(data);
},
beforeSend: function() {
$(".ass-fbshare").html('<img style="margin-left:50px;" src="'+assjs.path+'/images/ajax-loader.gif" />');
}
});
});
return false;
});
我想要实现的是为 "networks":"fblike,fbshare"
获取每个单独的社交网络功能,我在 jQuery 中将其引用为 assjs.networks
并循环处理它一次。
目前,它将两个社交网络对象发布到我的 PHP 脚本,该脚本处理 ajax 请求。
PHP 脚本
$socialnetwork = trim(stripslashes($_POST['network']));
如果我 var_dump($_POST);
在我的 PHP 处理脚本中,我会得到这些结果:
array(4) {
["action"]=>;
string(14) "get_ass_counts"
["_wpnonce"]=>;
string(10) "2f3686b7ca"
["network"]=>;
array(1) {
[0]=>;
string(14) "fblike,fbshare"
}
["s"]=>;
string(0) ""
}
有没有一种方法可以分离或分解 jQuery
文件中的社交网络名称,以便它只传递每个社交网络名称一次?
谢谢
你可以用split来代替
var social_networks = [assjs.networks];
social_networks = social_networks.split(',');
这不是进行多次 ajax 调用的最佳方法,请考虑 Geohut 的建议。