首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >yii2购物车ajax

yii2购物车ajax
EN

Stack Overflow用户
提问于 2018-12-24 06:43:16
回答 1查看 375关注 0票数 0

我想在yii2中修改现有的购物车,这样它就不会重新加载页面,意思是让它通过ajax工作。当前购物车如下所示:

代码语言:javascript
复制
 <form method="post" id="form-prodtobuy-<?= $p->id ?>" action="<?= \Yii::$app->urlManager->createUrl(["site/cart"]) ?>">
 <input type="hidden" name="<?= Yii::$app->request->csrfParam; ?>" value="<?= Yii::$app->request->csrfToken; ?>" />
 <input type="hidden" name="task" value="update" />
 <input id="<?= $p->id ?>" class="form-control buy-input" name="product[<?= $p->id ?>]" value="<?= Purchase::getCartValue($p->id) ?>" data-id="<?= $p->id ?>" placeholder="0">
 <button class="btn btn-primary" type="submit">Buy <i class="glyphicon glyphicon-shopping-cart"></i></button>
 </form>

它工作正常,但会重新加载页面。

var_dump($_SESSION);后面看起来像这样:

代码语言:javascript
复制
 array(2) { ["__flash"]=> array(0) { } ["products"]=> array(3) { [2958]=> string(1) "2" [2959]=> string(1) "1" [2581]=> string(1) "1" } }

我显而易见的解决方案是在submit事件上添加e.preventDefault(),如下所示:

代码语言:javascript
复制
 $(document).on('submit', '[id^=form-prodtobuy-]', function(e) {
 e.preventDefault();
 var someVar = $('#someInput').val();
     $.ajax({
        type: "post",
        url: "<?php echo \Yii::$app->urlManager->createUrl(["site/cart"]) ?>",
        data: {???:someVar},
        .....................
     });
 });

ajax的“数据”应该是什么?

在哪里或者如何可以获得变量的名称来正确地设置会话?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-24 07:07:30

在ajax "data“中放入表单序列化输出。

注意,我使用的是这里的EOT_JS格式,所以最后一个文档的前面不能有空格。

代码语言:javascript
复制
$urlForm = \Yii::$app->urlManager->createUrl(["site/cart"]);

$this->registerJs( <<< EOT_JS 

    $(document).on('submit', '[id^=form-prodtobuy-]', function(e) {
        e.preventDefault();

        var formData = $(this).serialize();

        $.ajax({
            type: "post",
            url: "{$url}",
            data: formData,
            function(data) {
                console.log('form submit output');
                console.log(data);
            }
        });
    });

EOT_JS
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53907707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档