0

我在 AJAX a CodeIgniter 上浏览过很多教程,但我似乎无法让它工作。我正在尝试提交将产品添加到购物车的表单。

这是控制器部分:

public function addtocart($page = 'orcamento')
{
    ...
    // ADD TO CART
    $idprod=$this->input->post("id",TRUE);
    $quant=$this->input->post("quant",TRUE);
    $prodname=$this->input->post("prodname",TRUE);

    $addtocart = array(
        'id'      => $idprod,
        'qty'     => $quant,
        'price'   => 1,
        'name'    => $prodname
        );

    $this->cart->insert($addtocart);

风景:

<?php       
    $attributes = array('id' => 'flor'.$florestais_total_count);
    echo form_open('orcamento/addtocart', $attributes); 
?>
<span class="prod_list_quant_title">
    <?php echo lang('orc_quantidade'); ?>
</span>
<input type="text" name="quant" id="quant" class="prod_list_quant_input" value="" />
<input name="id" type="hidden" value="<?php echo $flor->idprodutos; ?>" style="border:0;" />
<input name="prodname" type="hidden" value="<?php $this->General_model->getLangString($flor->name,$lang); ?>" style="border:0;" />
<div class="prod_list_quant_add" onclick="addtocart('flor<?php echo $florestais_total_count; ?>')">
    <span class="text_quant_add"><?php echo lang('orc_btn_add'); ?></span>
</div>
</form>
</div>

还有 addtocart 功能:

function addtocart(formid)
{
    var pid=$c("form#"+formid).children("input[name='id']").val();
    var pquant=$c("form#"+formid).children("input[name='quant']").val();
    var pname=$c("form#"+formid).children("input[name='prodname']").val();

    $c.ajax({
            type: "POST",
            url: "<?php echo base_url(); ?>orcamento/addtocart",
            dataType: "json",
            data: "id="+pid+"&qty="+pquant&"name="+pname,
            cache:false,
            success: function() {
            }  
        });
        return false;
    }

我在这里做错了什么?

4

3 回答 3

0

我正在研究类似的问题。通过一些测试,我发现 jquery 调用对 CI url 的处理类似于 CSS 之类的东西。尝试删除 base_url 回声,看看你的位置。

于 2013-08-19T06:33:48.397 回答
0

我知道了!这是答案:

function addtocart(formid)
{
    $c.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>orcamento/addtocart",
        data : $c("form#"+formid).serialize(),
        success : function(data) {
                // Show OK message
                alert('ok');
        },
        error: function(error){
                // Show error message
                alert('error');
        }
        });
    return false;
}

现在我只需要更新视图上的产品列表而不刷新整个东西......

于 2013-02-23T19:34:23.270 回答
0

试试这个,而不是$c.ajax

$.post("<?php echo base_url(); ?>orcamento/addtocart",$("#"+formid).serialize());

看看接下来会发生什么。

于 2013-02-23T19:10:52.990 回答