将列表视图的值传递给ajax

时间:2015-09-03 06:25:50

标签: javascript php jquery ajax list

我有一个动态创建的列表。创建列表的部分代码是:

<ul>
    <?
        foreach ($folders as $folder)
            {
                $folder = str_replace("{imap.gmail.com:993/imap/ssl}", "", $folder);
                $folder2 = str_replace("[Gmail]/", "", $folder);
            ?>
                <li>
                    <a><div id="box"><? echo $folder2; ?> </div></a>
                </li>
            <?}
</ul>

<div id="maillist"></div>

o / p $ folder

GMAIL/All Mail
GMAIL/Drafts
GMAIL/Important

$ folder2的o / p

All Mail
Drafts
Important

我想要的是当用户点击所有邮件时,与其对应的值(在这种情况下:GMAIL / All Mail)应该通过ajax传递给另一个脚本。对于列表中的其他值也应遵循相同的过程

ajax代码

<script>
$(document).ready(function(){
    $('#box').change(function(){

        var boxid = $('#box').val();
        console.log($('#box'))
        if(boxid != 0)
        {

            $.ajax({
                type:'post',
                url:'a_fetchmaillist.php',
                data:{id:boxid},
                cache:false,
                success: function(returndata){
                    $('#maillist').html(returndata);
                    console.log(returndata)
                }
            });
        }
    })
})
</script>   

任何人都可以告诉我是否有可能做我想做的事情,如果是,那么将如何完成

1 个答案:

答案 0 :(得分:3)

首先不要多次分配相同的ID ,而是设置一个类(例如box)。

然后为特定文件夹分配数据属性(例如box-allMails)并在更改时选择该属性:

foreach ($folders as $folder)
{
   $folder = str_replace("{imap.gmail.com:993/imap/ssl}", "", $folder);
   $folder2 = str_replace("[Gmail]/", "", $folder);
?>
   <li>
     <div class="box" data-folder="<? echo $folder2 ?>"><? echo $folder2; ?></div>
   </li>
<?}

然后改变:

$(document).on('click', '.box', function() {
   var folder = $(this).attr('data-folder');
   // ajax call..
});

<强>更新

重要提示:您必须先点击“点击”事件而不是“更改”,因为您点击了div,而不是输入(我已更改了代码)。

活动授权:请注意代码:

$(document).on('click', '.dynamic-element', function() { .. })

而不是:

$('.element').on('click', function() { .. });

第二个无效,因为您正在动态创建元素。

可点击:除非您想要重定向到其他网页,否则您无需插入锚标记即可使列表项可以点击。在您的情况下,您可以设置.box div的样式以获得这样的光标指针:

CSS

.box { cursor:pointer }

jQuery会处理其余的事情(查看示例)

$(document).on('click', '.box', function() {
  var folder = $(this).attr('data-folder');
  alert('You clicked on: ' + folder);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul>
  <li><div class="box" data-folder="folderOne">Folder One</div></li>
  <li><div class="box" data-folder="folderTwo">Folder Two</div></li>
  <li><div class="box" data-folder="folderThree">Folder Three</div></li>
  <li><div class="box" data-folder="folderFour">Folder Four</div></li>
</ul>