【发布时间】:2015-02-09 08:43:14
【问题描述】:
我有这个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 并循环处理并处理一次。
目前它会将两个社交网络对象都发布到我处理 ajax 请求的 PHP 脚本中。
PHP 脚本
$socialnetwork = trim(stripslashes($_POST['network']));
如果我在我的 PHP 处理脚本中 var_dump($_POST); 我会得到这些结果:
array(4) {
["action"]=>;
string(14) "get_ass_counts"
["_wpnonce"]=>;
string(10) "2f3686b7ca"
["network"]=>;
array(1) {
[0]=>;
string(14) "fblike,fbshare"
}
["s"]=>;
string(0) ""
}
有没有一种方法可以分离或分解jQuery 文件中的社交网络名称,使其只传递每个社交网络名称一次?
谢谢
【问题讨论】:
-
所以在您的数组 social_network 中有重复项,您想删除它们吗?
-
您在 Ajax 中进行多次调用是否有原因?为什么不通过网络向 php 代码发出单个请求并在 php 中执行所有故障,这样您将始终同时在 php 代码中拥有所有这些故障
-
@Geohut,我可能走错了路,但脚本的目的是为各种社交网络调用
follower计数。他们检索数据的速度可能很慢,所以我认为这样做可能是正确的方式。 -
@aktiv-coder,不想删除它们。我想从字符串中的值中提取每个单词,例如
fblike和fbshare。
标签: php jquery arrays ajax loops