2016-06-28 4 views
1

Ich möchte etwas wie diese unten Code erreichen. nur, dass der Code eine Anfrage aus der Datenbank macht, möchte ich Anfrage an die Datenbank senden

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

wie Anfrage senden Attributnamen hinzufügen und Attributwert in DB speichern unten ist mein Code habe ich bereits

<?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); 
?> 

in meinem Controller ich habe diese

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, 
     ]); 
    } 
} 

und meiner Ansicht nach habe ich dieses

<?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() ?> 

Nun meine Frage ist, ich möchte nur den Wert der einzelnen Feldeingabe greifen und es zu Server-Seite für speichern im DB senden, ohne dass das gesamte Formular Der über JS Code funktioniert genug, um den Wert zu unterbreiten aber wie sende ich diese an den Server sparen

+0

Wenn Sie Ihr Formular in JSON Notation konvertieren wollen, wo der Elementname Schlüssel und der Wert ... naja ... der Wert ist, vielleicht [diese Frage] (http://stackoverflow.com/questions/11338774/ serialize-form-data-to-json) können Sie beginnen. Suche nach dem Schlüsselwort 'serializeObject' ... –

Antwort

0
//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); 
       } 
     }); 
    }); 

Wenn Sie fügen Sie mehr Schlüsselwert senden, nur diejenigen, die als durch Komma getrennt Wert wie

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

und so weiter ... und Sie kann diesen Wert als Post-Par erhalten Ameter in Ihrem Controller.

+0

ok danke, das macht wirklich Sinn, gibt es eine Möglichkeit, das Formular auf der Controllerseite so zu laden ($ model-> load (Yii :: $ app-> request-> post()) && $ model-> save()). Gibt es eine Möglichkeit, dies mit Ajax zu tun, dies wird mich vor der globalen Variable $ _post direkt speichern oder wie kann ich die $ _POST .. Dank – sam

+0

Ich bin nicht wirklich ein Experte auf yii. Aber ich denke, Sie werden in der Lage sein, auf Daten sowohl mit $ _POST ["title"] als auch mit CHttpRequest :: getParam ('title') in Ihrem Controller zuzugreifen. und um $ _POST zu filtern, können Sie php-eingebaute Funktionen wie filter_input() oder filter_var() verwenden. –

Verwandte Themen