-1

可能这个问题很愚蠢,但我已经尝试解决了好几天,但仍然无法完成。谁能解决这个问题,请说出价格并给我你的贝宝,钱给你:). 基本上,我想将添加到愿望清单按钮添加到一系列 div,id =“imgforplaces_thumbnail”(参见我的 php 函数),然后 php 函数中的 while 循环将生成多个 div“imgforplaces_thumbnail”,即 12. 我试过 var_dump($row['id']); 对于 while 循环中的每个不同项目,它们显示了 1、2、3、4、5、6 等。基本上是添加到愿望列表按钮,类 =“addbutton”,“deletebutton”,当我点击它时,将执行 ajax 调用,Addtobucketlist() 或 Deletefrombucketlist()(见标题)。根据 checkifadded() 的状态,它将显示或隐藏类“addbutton”或“deletebutton”。现在我的问题是,当我执行代码时,当我点击第一个检查按钮时,它只是运行最后一个检查按钮功能!即 $row['id']=6。

值得注意的一件事是,如果我不使用多个 div,它就像魔术一样工作!但不是当有多个 div "imgforplaces_thumbnail"

你可以在这里看到演示:http: //utourpia.me/php/dreamtrip.php

这是我的标题:

    $(document).ready(function(){

    $('.addBucket').submit(function(e) {
            Addtobucketlist();
            e.preventDefault(); 
        }); 
    });
    $(document).ready(function(){

        $('.deleteBucket').submit(function(e) {
            Deletefrombucketlist();
            e.preventDefault(); 
        }); 
    });

我会做一个ajax调用:

function Addtobucketlist()
{
    hideshow('loading',1);
    error(0);
    $.ajax({
    type: "POST",
    url: "http://utourpia.me/php/addtobucketlist.php",      
    data: $('.addBucket').serialize(),
    dataType: "json",
    success: function(msg){

        if(parseInt(msg.status)==1)
        {
            if ($('.addbutton').is(":visible")){
            //hide the form
            $('.addbutton').fadeOut(1);                 
            //show the success message
            $('.deletebutton').fadeIn(1);
            }
            else {
            //hide the form
            $('.addbutton').fadeIn(1);                  
            //show the success message
            $('.deletebutton').fadeOut(1);
            }
        }
        else if(parseInt(msg.status)==0)
        {
            error(1,msg.txt);
        }

        hideshow('loading',0);
    }
});

}

function Deletefrombucketlist()
{
    hideshow('loading',1);
    error(0);
    $.ajax({
    type: "POST",
    url: "http://utourpia.me/php/deletefrombucketlist.php",     
    data: $('.deleteBucket').serialize(),
    dataType: "json",
    success: function(msg){

        if(parseInt(msg.status)==1)
        {
            if ($('.addbutton').is(":visible")){
            //hide the form
            $('.addbutton').fadeOut(1);                 
            //show the success message
            $('.deletebutton').fadeIn(1);
            }
            else {
            //hide the form
            $('.addbutton').fadeIn(1);                  
            //show the success message
            $('.deletebutton').fadeOut(1);
            }
        }
        else if(parseInt(msg.status)==0)
        {
            error(1,msg.txt);
        }

        hideshow('loading',0);
    }
});

}

这是我的 php 函数:

$result = mysql_query("select SQL_CALC_FOUND_ROWS * from places order by id asc limit 12");

 while ($row = mysql_fetch_array($result)) {
        echo '<div id=imgforplaces_thumbnail>';

$location_id = $row['id'];

if (check_if_added($users_id, $location_id) == "yes")
{ 
echo '<div class=addbutton>';
echo '<form class=deleteBucket action="http://utourpia.me/php/deletefrombucketlist.php" method=post>';
echo '<input type="hidden" name="Delete1" value='.$location_id.' />';
echo '<input type="image" src="../images/checked.png" name="Delete" value="delete"><img id=loading src="http://utourpia.me/images/loading.gif" alt="working.." />';
echo '</form>';
echo '</div>';
echo '<div class="deletebutton">';
echo '<form class=addBucket action="http://utourpia.me/php/addtobucketlist.php" method=post>';
echo '<input type="hidden" name="Add1" value='.$location_id.' />';
echo '<input type="image" src="../images/haventchecked.png" name="Add" value="add"><img id=loading src="http://utourpia.me/images/loading.gif" alt="working.." />';
echo '</form>';
echo '</div>';
}
else if (check_if_added($users_id, $location_id) == "no")
{
echo '<div class=addbutton>';
echo '<form class=addBucket action="http://utourpia.me/php/addtobucketlist.php" method=post>';
echo '<input type="hidden" name="Add1" value='.$location_id.' />';
echo '<input type="image" src="../images/haventchecked.png" name="Add" value="add"><img id=loading src="http://utourpia.me/images/loading.gif" alt="working.." />';
echo '</form>';
echo '</div>';
echo '<div class="deletebutton">';
echo '<form class=deleteBucket action="http://utourpia.me/php/deletefrombucketlist.php" method=post>';
echo '<input type="hidden" name="Delete1" value='.$location_id.' />';
echo '<input type="image" src="../images/checked.png" name="Delete" value="delete"><img id=loading src="http://utourpia.me/images/loading.gif" alt="working.." />';
echo '</form>';
echo '</div>';
}   
    echo '</div>'; //end div imgforplaces_thumbnail 

            echo '<br />';
        }
4

1 回答 1

0

从您的示例页面和问题中需要注意的一些事项:

  1. $(document).ready 只需要在您的页面上使用一次。你有好几次。
  2. ID 必须是唯一的。
  3. 您无需将添加和删除图像包装在表单中。只需为每个添加一个类或唯一 ID,然后添加一个点击事件,而不是提交表单。或者,如果您想保留表单,请在执行操作之前立即调用 e.preventDefault() 以阻止表单提交。但是,您似乎想异步执行这些操作,在这种情况下,您应该删除表单并在执行 AJAX 请求的每个图像上放置一个单击事件。
  4. 如果您的 DOM 元素是在 document.ready 之后创建的,请考虑使用live而不是 click。
于 2013-07-13T02:01:24.117 回答