Php ajax执行过程中的错误

Php ajax执行过程中的错误,php,javascript,ajax,Php,Javascript,Ajax,我一直是stackoverflow的忠实粉丝(这让我在这里问这个问题,而不是在其他任何地方),不管怎样,不用再多说了。。。 在创建一个商店系统时,我计划实现一个ajax,它可以动态地购买商品。现在,检索项目的循环是这样的: <?php $shop_query = mysql_query("SELECT * FROM sector0_item WHERE 1"); $numrows = mysql_num

我一直是stackoverflow的忠实粉丝(这让我在这里问这个问题,而不是在其他任何地方),不管怎样,不用再多说了。。。 在创建一个商店系统时,我计划实现一个ajax,它可以动态地购买商品。现在,检索项目的循环是这样的:

    <?php
                    $shop_query = mysql_query("SELECT * FROM sector0_item WHERE 1");
                    $numrows = mysql_num_rows($shop_query);
                    While ($shop_fetch = mysql_fetch_array($shop_query)){

                ?>
                    <div id="shop_main">
                        <div class = 'item_img'>
                            <a><img src = "http://images.wikia.com/dofus/images/4/4e/Discovery_Potion.png" height = '100px'/></a>
                        </div>

                        <div class="item_buy">
                            <a><center>Price: <?php echo number_format($shop_fetch['item_price']);?></center><br /></a>
                            <a>Quantity: <input type = 'text' size = '9' id = 'itemquantity'/><br /></a>
                            <a><p>Point requirement: <?php echo number_format($shop_fetch['item_pt_req']);?></p></a>
                            <a><input type = 'button' id = 'buy' value = 'buy'/></a><span id = 'buy_status'></span>

                        </div>
                            <a><h3><?php echo $shop_fetch['item_name'];?></h3></a>
                            <a><p><?php echo $shop_fetch['item_desc'];?></p></a>
                            <a>Item Type: <font color = 'green'><?php echo $shop_fetch['item_class'];?></font></a>
                    </div>
                    <br />
                <?php
                    }
                ?>

价格:
数量:
要点要求:

项目类型:
然而,我的ajax似乎表现得非常怪异。我的实现是显示正在加载的gif图像。 脚本:


$(“#购买”)。单击(函数(){
变量数量=$('#itemquantity').val();
$('buy#u status').html('';
});

问题是,单击时只有一个按钮显示圆圈。脚本的位置是否导致了这种情况?非常感谢您的帮助。

您只能有一个具有给定id的项目。当您有多个具有相同id的元素时,将返回哪一个元素是不确定的,但它通常只是第一个项目

如果您需要多个buy按钮,并且希望将它们分配给同一个jQuery事件处理程序,那么请使用公共类名而不是id


如果要动态加载内容,并且希望事件处理程序为该内容工作,则需要使用委托事件处理

在jQuery中,这通常通过
.on()
.delegate()
完成。基本思想是选择一个未动态加载的静态父对象(可能是show_main的父对象),将事件绑定到该对象,然后像这样传递动态元素的选择器(注意,我已将id更改为类以标识buy按钮):

$(staticParentSelector).on('click','buyButton',function()){
$(this).closest(“.item\u buy”).find(“.buy\u status”).html(“”);
})

您只能有一个具有给定id的项目。当您有多个具有相同id的元素时,将返回哪一个元素是不确定的,但它通常只是第一个项目

如果您需要多个buy按钮,并且希望将它们分配给同一个jQuery事件处理程序,那么请使用公共类名而不是id


如果要动态加载内容,并且希望事件处理程序为该内容工作,则需要使用委托事件处理

在jQuery中,这通常通过
.on()
.delegate()
完成。基本思想是选择一个未动态加载的静态父对象(可能是show_main的父对象),将事件绑定到该对象,然后像这样传递动态元素的选择器(注意,我已将id更改为类以标识buy按钮):

$(staticParentSelector).on('click','buyButton',function()){
$(this).closest(“.item\u buy”).find(“.buy\u status”).html(“”);
})

id是唯一值-在html页面上,每个id必须具有唯一值。请改用类。

id是唯一值-在html页面上,每个id必须具有唯一值。改用类。

两件事:

  • 很难从示例中分辨出来,但是是否有一个迭代器可以创建可用项的列表?如果是这样,你不应该使用唯一的ID。如果真的只有一个
    #买
    ,那么你就没事了

  • 使用Ajax更新内容时,将丢失绑定。假设与
    #buy
    按钮相关的项目被其他项目替换,那么最好安排一次委托活动:

  • //不是在内联脚本中,而是只在主JS文件中执行一次
    $(文档).ready(函数(){
    $('包装器')。在('单击','购买',(函数()上){
    变量数量=$('#itemquantity').val();
    $('buy#u status').html('';
    });
    })
    
    其中,
    #wrapper
    是DOM树中较高的祖先,它从未被Ajax事件破坏过。

    两件事:

  • 很难从示例中分辨出来,但是是否有一个迭代器可以创建可用项的列表?如果是,您不应该使用唯一的ID。如果确实只有一个
    #buy
    ,那么您就可以了

  • 使用Ajax更新内容时,您将丢失绑定。如果与
    #buy
    按钮相关的项目被其他项目替换,则最好使用委托事件:

  • //不是在内联脚本中,而是只在主JS文件中执行一次
    $(文档).ready(函数(){
    $('包装器')。在('单击','购买',(函数()上){
    变量数量=$('#itemquantity').val();
    $('buy#u status').html('';
    });
    })
    

    其中,
    #wrapper
    是DOM树中较高的祖先,它不会被Ajax事件破坏。

    您需要将代码放入
    $(document).ready()
    。因此:

    $(document).ready( function() {
        $('#buy').click( function(){
             // do something here
        });
    });
    

    此外,您可能希望列出jfriend00关于ID的建议。

    您需要将代码放入
    $(document).ready()
    。因此:

    $(document).ready( function() {
        $('#buy').click( function(){
             // do something here
        });
    });
    

    此外,您可能希望列出jfriend00关于id的建议。

    我没有理解您的意思。“单击时只有一个按钮显示圆圈”这是什么意思?假设布局中有以下项目_1(购买)项目_2(购买)。加载的gif仅在单击第一个时显示,而不是第二个。可能是因为id。我没有理解您。“单击时只有一个按钮显示圆圈”其含义是什么?假设布局具有以下内容
    $(document).ready( function() {
        $('#buy').click( function(){
             // do something here
        });
    });