jQuery,如何只使用ajax循环一次数组

时间:2015-02-09 08:43:14

标签: php jquery arrays ajax loops

我有这个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的每个社交网络功能$socialnetwork = trim(stripslashes($_POST['network'])); 并循环并处理它一次。

目前,它将社交网络对象发布到处理ajax请求的PHP脚本。

PHP脚本

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

有没有办法可以分离或拆分{{1}}文件中的社交网络名称,这样它只会传递一次EACH社交网络名称?

由于

1 个答案:

答案 0 :(得分:2)

你可以使用拆分

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

MDN ref

这不是制作多个ajax调用的最佳方法,请考虑Geohut建议。