gpt4 book ai didi

jquery - Ajax 请求只能运行一次

转载 作者:行者123 更新时间:2023-12-01 07:59:54 24 4
gpt4 key购买 nike

我正在研究 codeigniter 的购物车类。我想在用户更改商品数量时更新购物车。

我有这样的 jquery 文件

$(function() {   
$('#bookings_form_customer select').on('change', function(ev) {

var rowid = $(this).attr('class');
var qty = $(this).val();

var postData_updatecart = {
rowid : rowid,
qty : qty
};

//posting data to update cart

$.ajax({
url : base_url + 'bookings/update_booking_cart',
cache : false,
type : 'post',
data : postData_updatecart,
beforeSend : function() {
$('#cart_content').html('Updating...');
},
success : function(html) {
$('#cart_content').html(html);
}
});
});

});

我正在请求下面的 Controller 更新购物车。

class Bookings extends NQF_Controller {

public function update_booking_cart() {
$rowid = $this -> input -> post('rowid');
$qty = $this -> input -> post('qty');
$data = array('rowid' => $rowid, 'qty' => $qty);
$this -> cart -> update($data);

$this -> load -> view('shop/cart');
}

}

我的商店/购物车文件如下所示

<div class="cart_form">
<?php echo form_open(base_url().'index.php/bookings/customerdetails', array('class' => 'bookings_form_customer', 'id' => 'bookings_form_customer')); ?>

<table cellpadding="6" cellspacing="1" style="width:100%" border="0">

<tr>
<th style="text-align:left">Item Description</th>
<th style="text-align:left">QTY</th>
<th style="text-align:right">Item Price</th>
<th style="text-align:right">Sub-Total</th>
</tr>

<?php $i = 1; ?>

<?php foreach ($this->cart->contents() as $items): ?>

<?php echo form_hidden($i.'[rowid]', $items['rowid']); ?>

<tr>
<td>

<?php echo $items['name']; ?>

<?php if ($this->cart->has_options($items['rowid']) == TRUE): ?>

<p>
<?php foreach ($this->cart->product_options($items['rowid']) as $option_name => $option_value): ?>

<strong><?php echo $option_name; ?>:</strong> <?php echo $option_value; ?><br />

<?php endforeach; ?>
</p>

<?php endif; ?>

</td>
<td>



<select name="<?php echo $i.'[qty]'; ?>" class="<?php echo $items['rowid']; ?>">

<?php
for($tt=0; $tt<=10; $tt++)
{
?>


<option value="<?php echo $tt; ?>" <?php if($tt==$items['qty']) echo 'selected="selected"'; ?>><?php echo $tt; ?></option>

<?php
}
?>
</select>

</td>



<td style="text-align:right"><?php echo $this->cart->format_number($items['price']); ?></td>
<td style="text-align:right">$<?php echo $this->cart->format_number($items['subtotal']); ?></td>
</tr>

<?php $i++; ?>

<?php endforeach; ?>

<?php

if($this -> session -> userdata('booking_pickup')=='courier')
{
?>

<tr>

<td>Pick Up Fees</td>
<td></td>
<td style="text-align:right">HK $20</td>
<td></td>


</tr>
<?php
}
?>
<?php

if($this -> session -> userdata('booking_return')=='courier')
{
?>

<tr>

<td>Drop Off Fees</td>
<td></td>
<td style="text-align:right">HK $20</td>
<td></td>


</tr>
<?php
}
?>


<tr>
<td colspan="2"> </td>
<td class="right"><strong>Total</strong></td>
<td class="right">$<?php echo $this->cart->format_number($this->cart->total()); ?></td>
</tr>

</table>

<p><?php echo form_submit('update_cart', 'Update your Cart'); ?></p>

</form>
</div>

当我更改选择选项(包含产品数量)时,AJAX 请求已发送并且可以正常工作。但是,它只适用于第一次,从第二次开始就不起作用了。

当我删除 ajax 请求调用并改为发出警报时,它每次都会起作用。这意味着只有ajax部分有问题。我从前天就被困住了。请帮忙。

最佳答案

尝试这样的事情

$(function() {   
$(document).on( "change", "#bookings_form_customer select", function(ev) {
// your code goes here
});
});

这是因为您要替换已应用更改 jquery 事件的元素。

因此来自 ajax 的新元素没有更改事件,因此它不起作用。

所以尝试上面的代码,它将在动态创建元素上绑定(bind)更改事件

已编辑

$(function() {   
$('#cart_content').on( "change", "#bookings_form_customer select", function(ev) {
// your code goes here
});
});

您可以将选择最小化为元素周围的选择@ jack

关于jquery - Ajax 请求只能运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20769628/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com