将元素ID传递给POST表单进程的数组

时间:2012-03-23 17:02:36

标签: php javascript jquery

所以说我用php循环创建了一系列图像 - >

<img src="http://..._1.jpg" class="profile-thumb" id="12345678">
<img src="http://..._2.jpg" class="profile-thumb" id="12345677">
<img src="http://..._3.jpg" class="profile-thumb" id="12345676">

用户可以通过点击jquery样式a la - &gt;

来选择图像元素
    $(".profile-thumb").click(function () {
        if ($(this).hasClass("active")) {
            $(this).removeClass('active');
        } else {
            $(this).addClass('active');
        }
    });

因此,当您点击图片时,它会添加一个&#39; .active&#39;类到图像元素 - &gt;

<img src="http://..._3.jpg" class="profile-thumb active" id="12345676">

如何将所有选定的元素ID传递到数组中,以便在PHP的表单处理中使用?

用户旅程:

点击照片 - &gt;将ID添加到数组 - &gt;点击提交按钮 - &gt;使用POST数组执行包含所有ID的功能(例如,使用标识为活动的ID向所有用户发送电子邮件)


我想将数组传递给一个带有AJAX调用的循环,并将输出传递给#post-info div - &gt;

    $.get('post.php', function(data) {
        $('#post-info').html(data);
    });

然后我将如何使用foreach循环读取POST数组?


解决方案:

HTML:

<button id="share" class="off">
    <span>Sharer</span>
</button>
<div id="sharer">
<!-- Array will echo here -->
</div>

使用Javascript:

    $("#share").click(function () {
        //Create var array
        var list = $('.active-profile').map(function(){return this.id;}).toArray();

        $.post('sharer.php', {ids:list}, function(data) {
            $('#sharer').html(data);
        });

    });

PHP(sharer.php)

        foreach ($_POST['ids'] as $id) {
            echo 'ID: ';
            echo $id;
        }

javascript数组(列表)通过jquery POST和#sharer div中的echo&#d发送

2 个答案:

答案 0 :(得分:3)

$('.profile-thumb.active').map(function(){return this.id}).toArray();

此外,您可以简单地使用:

代替if-hasClass-removeClass-else-addClass
$(".profile-thumb").click(function () {
    $(this).toggleClass("active");
});

演示:http://jsfiddle.net/ErVbS/

答案 1 :(得分:0)

要向php发送值数组,您需要使用稍微不同的语法。对于每个id,您可以创建一个类似于的URL。

http://test.com/?img_id[]=1&img_id[]=2&img_id[]=3

这将让您在php中获取值img_id作为数组。

$_POST['img_id'] // array of values. 
foreach ($_POST['img_id'] as $id) {
  print $id;
}  
// 1
// 2
// 3