使用ajax和json更新表单上的字段

时间:2014-03-28 17:53:14

标签: php jquery ajax json yii

我希望在使用ajax& amp;从数据库检索数据后更新表单中的某些字段。 JSON。

这是代码:

以我的形式:

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'anagrafica-form',
    // Please note: When you enable ajax validation, make sure the corresponding
    // controller action is handling ajax validation correctly.
    // There is a call to performAjaxValidation() commented in generated controller code.
    // See class documentation of CActiveForm for details on this.
    'enableAjaxValidation'=>false,
)); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary($model); ?>

    <div class="row">
        <?php echo $form->labelEx($model,'codicefiscale'); ?>
        <?php echo $form->textField($model,'codicefiscale',array('size'=>20,'maxlength'=>16)); ?>
        <?php echo $form->error($model,'codicefiscale'); ?>

                <div id="bottone_ricerca" style="display:inline;">
                <?php    
                    echo CHtml::ajaxButton( 'Ricerca',
                                            $this->createUrl('anagrafica/popolaAnagrafica'),
                                            array(
                                                'type' => 'POST',
                                                'datatype' => 'json',
                                                'data' => array('codfisc' => 'js:$(\'#AnagraficaForm_codicefiscale\').val()'),
                                                'success' => 'function(response){
                                                    $("#cand").html(response);
                                                    $("#'.CHTML::activeId($model,'cognome').'").val(response.cognome);
                                                    $("#'.CHTML::activeId($model,'nome').'").val(response.nome);
                                                    $("#'.CHTML::activeId($model,'email').'").val(response.email);




                                                   }'
                                                ), 
                                            array()
                          );
                ?>    

                </div>
                <div id="cand">

                </div>     

    </div>            

    <div class="row">
        <?php echo $form->labelEx($model,'cognome'); ?>
        <?php echo $form->textField($model,'cognome',array('size'=>35,'maxlength'=>30)); ?>
        <?php echo $form->error($model,'cognome'); ?>
    </div>        

    <div class="row">
        <?php echo $form->labelEx($model,'nome'); ?>
        <?php echo $form->textField($model,'nome',array('size'=>35,'maxlength'=>30)); ?>
        <?php echo $form->error($model,'nome'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($model,'email'); ?>
        <?php echo $form->textField($model,'email',array('size'=>35,'maxlength'=>30)); ?>
        <?php echo $form->error($model,'email'); ?>
    </div>        

    <div class="row">
        <?php echo $form->labelEx($model,'indirizzo'); ?>
        <?php echo $form->textField($model,'indirizzo',array('size'=>35,'maxlength'=>30)); ?>
        <?php echo $form->error($model,'indirizzo'); ?>
    </div>        

    <div class="row">
        <?php echo $form->labelEx($model,'cap'); ?>
        <?php echo $form->textField($model,'cap',array('size'=>10,'maxlength'=>5)); ?>
        <?php echo $form->error($model,'cap'); ?>
    </div>        

    <div class="row">
        <?php echo $form->labelEx($model,'comune'); ?>
        <?php echo $form->textField($model,'comune',array('size'=>25,'maxlength'=>20)); ?>
        <?php echo $form->error($model,'comune'); ?>
    </div>        

    <div class="row">
        <?php echo $form->labelEx($model,'provincia'); ?>
        <?php echo $form->textField($model,'provincia',array('size'=>5,'maxlength'=>2)); ?>
        <?php echo $form->error($model,'provincia'); ?>
    </div>        

    <div class="row">
        <?php echo $form->labelEx($model,'telefono'); ?>
        <?php echo $form->textField($model,'telefono',array('size'=>20,'maxlength'=>15)); ?>
        <?php echo $form->error($model,'telefono'); ?>
    </div>        

    <div class="row buttons">
        <?php echo CHtml::submitButton('Inserisci'); ?>
    </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

在我的控制器中:

public function actionPopolaAnagrafica()
{
    $codfisc = Yii::app()->request->getParam('codfisc');
    echo $codfisc;
    if (Yii::app()->request->isAjaxRequest) {
        if ($codfisc == '') {
            echo CJSON::encode(array(
                'error' => 'true',
                'status' => 'Richiesta non valida.'
            ));
            Yii::app()->end();
        } else {   
            //$sql = "SELECT * FROM user WHERE username = ':codfisc'";
            $sql = "SELECT * FROM user WHERE username = '".$codfisc . "'";
            $cmd = Yii::app()->db->createCommand($sql);
            //$cmd->bindParam(":codfisc", $codfisc, PDO::PARAM_STR);
            $result = $cmd->queryRow();
            $sql2 = $cmd->text;                    
            if($result) {
                echo CJSON::encode(array(
                                        'error' => 'false',
                                        'status' => 'Codice Fiscale esistente',
                                        'username' => $result['username'],
                                        'cognome' => $result['cognome'],
                                        'nome' => $result['nome'],
                                        'email' => $result['email']
                                   )                                
                     );
                Yii::app()->end();
            } else {
                echo CJSON::encode(array(
                    'error' => 'true',
                    'status' => 'Il codice fiscale ' . $codfisc . ' non esiste. SQL = ' . $sql2 . '.'
                ));
                Yii::app()->end();
            }
        }

    }

我无法更新字段。答复是:

  

xxxyyyddxdd {“error”:“false”,“status”:“Codice Fiscale   esistente”, “用户名”: “xxxyyyddxdd”, “cognome”: “Cognome”, “诺姆”: “诺姆”, “电子邮件”: “prova@email.it”}

但它应该是:

  

{“error”:“false”,“status”:“Codice Fiscale   esistente”, “用户名”: “xxxyyyddxdd”, “cognome”: “Cognome”, “诺姆”: “诺姆”, “电子邮件”: “prova@email.it”}

我的错误在哪里?

由于

3 个答案:

答案 0 :(得分:1)

您需要删除以下行:

echo $codfisc;

(函数actionPopolaAnagrafica中的第二行)

答案 1 :(得分:0)

public function actionPopolaAnagrafica()
{

    $codfisc = Yii::app()->request->getParam('codfisc');


      //this LINE!!!!!!!!!!!!!!!!!!!!!!!
    echo $codfisc;

答案 2 :(得分:0)

更改:

'success' => 'function(response){
          $("#cand").html(response);
          $("#'.CHTML::activeId($model,'cognome').'").val(response.cognome);

有了这个:

'success' => 'function(response){
           $("#cand").html(response);

          var obj = jQuery.parseJSON( response );
          console.log(obj.cognome);
          $("#'.CHTML::activeId($model,'cognome').'").val(obj.cognome);

在输入HTML值之前解析JSON数据 使用console.log(obj.cognome);调试chrome中的值。