javascript - 如何在 yii2 中使用 $.post() 发送请求并将数据添加到数据库

标签 javascript php jquery yii2

我想实现类似下面代码的功能。只是代码正在从数据库发出请求,我想将请求发送到数据库

$.post( "/trobay/categories/default/lists?parent_id="+$(this).val(), function( data ) {

如何发送添加属性名称和属性值的请求以保存在数据库中 下面是我已经有了的代码

    <?php
  $script = <<< JS
  $(document).ready(function(){
    //setup before functions
         var typingTimer;                
         var doneTypingInterval = 3000;  
         var \$TitleInput = $('#product-product_title');

         //on keyup, start the countdown

        \$TitleInput.on('keyup input change paste',function(){
            clearTimeout(typingTimer);
            if (\$TitleInput.val()) {
                typingTimer = setTimeout(doneTyping, doneTypingInterval);
            }
        });



         //user is "finished typing," do something
         function doneTyping () {

             data = \$TitleInput.val();

                 $.ajax({
        url: '/trobay/draft/create',
        type: 'POST',
        data: data,
        success: function (data) {
                      alert(data)
            },
            error: function(jqXHR, errMsg) {
             // handle error
                alert(errMsg);
            }
        });


         }

  });
 JS;
 $this->registerJs($script);
 ?>

在我的 Controller 中我有这个

public function actionCreate()
{
    $model = new Draft();

    if ($model->load(Yii::$app->request->post())) {
        $model->created_at = \time();
        if($model->save()){
            return draftId;
        }else{
            return '0';
        }

    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

在我看来我有这个

<?php $form = ActiveForm::begin(['id'=>$model->formName(),
                                          'enableClientValidation'=> true,
                                          'fieldConfig' => ['template' => '{label}{input}{hint}']]); ?>
        <div class="row">
           <div class="col-md-12">
              <?= $form->field($model, 'product_title')->textInput([
                'class'=>'title-input',
                'placeholder' => 'Give us a title for your items(include size,brand,color,material. e.t.c)',
                ])->label(false) ?>
    </div>
            <div class="col-md-12 text-muted">
      E.g Men's blue addidas glide running shoes size 11 
    </div>
        </div>
    <?= $form->field($model, 'user_id')->textInput() ?>

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

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

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

<?= $form->field($model, 'category_id')->textInput() ?>

现在我的问题是我只想获取每个字段输入的值并将其发送到服务器端以保存在数据库中,而无需提交整个表单 about JS 代码足以获取该值,但我如何将其发送到服务器进行保存

最佳答案

    //user is "finished typing," do something
    function doneTyping () {
        data = \$TitleInput.val();
        $.ajax({
              url: '/trobay/draft/create',
              type: 'POST',
              data: {title: data}
              success: function (data) {
                       alert(data)
              },
              error: function(jqXHR, errMsg) {
                    // handle error
                    alert(errMsg);
              }
        });
    });

如果您需要发送更多键值,只需将它们添加为逗号分隔值,例如

data: {title: data, attr:"value"} 

依此类推...您可以在 Controller 中接收该值作为 post 参数。

关于javascript - 如何在 yii2 中使用 $.post() 发送请求并将数据添加到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38068063/

相关文章:

javascript - 使用管道仅显示对象的值

php - 从动态 MySql 表中的第 n 行开始获取 m 行

php - 通过 AWS EC2 负载均衡器将 HTTP 强制转换为 HTTPS

javascript - 链接多个 jquery 事件而不使用回调

javascript - Filemaker、PHP 和 jquery > 显示隐藏元素

JavaScript "include"函数?

javascript - JsTestDriver 和旧版 javascript。转换还是不转换?

javascript - jQuery 以此数据属性为目标

php - php中箭头运算符(->)和数组索引括号([])之间的区别

javascript - 使用 AngularJS 获取集合中选定的元素。声明式方法