猿问

yii2 形成 AJAX 到不同的动作 url

我无法让它工作:它也总是重定向到“动作/创建”,而我不想重定向到那个动作。


我的代码在页脚视图中是这样的:


<script>


    jQuery(document).ready(function($) {

$("#quick-contact").on('submit',function(event) {

//  $("#quick-contact").on('beforeSubmit',function(event) {



        event.preventDefault(); // stopping submitting

        console.log("step1");

        var form = $(this);

        var formData = form.serialize();

      //  var data = $(this).serializeArray();

        var url = $(this).attr('/quick-contact/create');


        $.ajax({

            url: form.attr("action"),

            type: form.attr("method"),

            dataType: 'json',

            data: formData


        })


        .done(function(response) {

            if (response.data.success == true) {

                alert("Wow you commented");

            }

        })

        .fail(function() {

            console.log("error");

        });

      //  return false;

    });

}); 

    </script>

<?php //pjax::begin(['enablePushState' => false]); ?>

<div id="contact-form">    


    <?php $form = ActiveForm::begin(['action'=>'/quick-contact/create','id'=>'quick-contact','method'=>'post']); ?>


<?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>


<?= $form->field($model, 'email')->textInput(['maxlength' => true]) ?>


<?= $form->field($model, 'message')->textarea(['rows' => 2]) ?>


<div class="form-group">

    <?= Html::submitButton(Yii::t('app', 'Save'), ['class' => 'btn btn-success']) ?>

</div>


<?php ActiveForm::end(); ?>

</div>


更新了 jquery 脚本代码:


现在 ajax 请求正在通过,但我得到的响应是:


name   Unknown Property

message Getting unknown property: yii\web\Application::requset

code    0

type    yii\base\UnknownPropertyException

file    /var/www/clients/client2/web238/web/vendor/yiisoft/yii2/base/Component.php


青春有我
浏览 134回答 1
1回答

慕桂英3389331

只需更换$("#quick-contact").submit(function(event)&nbsp;{和$("#quick-contact").on('beforeSubmit',function(event)&nbsp;{更新您收到错误的原因是您的控制台中有几个关于 3rd 方脚本的错误,除非您删除它们,否则您将无法使其正常工作,您需要修复以下问题缺少的另一件事是return false;您的beforeSubmit事件中的声明,您应该在 ajax 调用之后添加此行,以防止表单提交。$("#quick-contact").on('beforeSubmit',function(event) {&nbsp; &nbsp; //....your code for ajax call&nbsp; &nbsp; return false;});更新 2错误的原因是requsetwhich的拼写应该是,而request您需要更改该行if ($model->load(Yii::$app->requset->post()) && $model->save()) {到if ($model->load(Yii::$app->request->post()) && $model->save()) {如果您仍然遇到问题,请添加一个单独的问题,因为此问题仅针对已解决的 ajax 部分。
随时随地看视频慕课网APP
我要回答