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']));

如果我在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文件中的社交网络名称,使其只传递每个社交网络名称一次?

感谢

您可以对其使用拆分

   var social_networks = [assjs.networks];
   social_networks = social_networks.split(',');

MDN参考

这不是进行多个ajax调用的最佳方式。请考虑Geohut的建议。