Php ajax执行过程中的错误
我一直是stackoverflow的忠实粉丝(这让我在这里问这个问题,而不是在其他任何地方),不管怎样,不用再多说了。。。 在创建一个商店系统时,我计划实现一个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
<?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必须具有唯一值。改用类。两件事:
#买,那么你就没事了
#buy
按钮相关的项目被其他项目替换,那么最好安排一次委托活动://不是在内联脚本中,而是只在主JS文件中执行一次
$(文档).ready(函数(){
$('包装器')。在('单击','购买',(函数()上){
变量数量=$('#itemquantity').val();
$('buy#u status').html('';
});
})
其中,#wrapper
是DOM树中较高的祖先,它从未被Ajax事件破坏过。两件事:
#buy
,那么您就可以了#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
});
});