【问题标题】:Yii Framework - data undefined - Ajax JavascriptYii 框架 - 数据未定义 - Ajax Javascript
【发布时间】:2014-05-08 12:36:02
【问题描述】:

我尝试了两天来解决这个问题,但我没有成功。

我的 identificacaoEmigrante.php 模型有一个页面 _form.php,我的 filiacao.php 模型有一个页面 _form.php。 在 identificacaoEmigrante 模型中,我有如下字段:

  • IdEmigrante
  • 名称
  • idConjuge
  • nomeConjuge
  • idFiliacao (FK)

在 filiacao 模型中,我有如下字段:

  • idFiliacao (PK)
  • 名目
  • nomePai

由此,我想将 identificacaoEmigrante _form 保存在 $_SESSION 变量中,以便在其他页面中获取这些值。

当我点击带有标签的按钮:“Adicionar nova filiacao”时,我想去 filiacao _form 并填写该表格并 当我回来时,我希望 identificacaoEmigrante _form 填写以前输入的数据。 IE,我正在填写 identificacaoEmigrante _form 并且 filiacao 还不存在,所以,我需要点击按钮“adicionar nova filiacao”并通过 TbButton 事件的 onClick 调用 filiacao _form 并填写该字段。当我从 filiacao _form 回来时,我希望 identificacaoEmigrante _form 的字段填充 $_SESSION 变量。

我的 identificacaoEmigrante _form.php:

<div class="form container">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'identificacao-emigrante-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,)); ?>

<?php echo $form->errorSummary($model); ?>
<div class="container">
<div class="row">
    <?php echo $form->labelEx($model,'idEmigrante'); ?>
    <?php echo $form->textField($model,'idEmigrante', array('id'=>'idE')); ?>
    <?php echo $form->error($model,'idEmigrante'); ?>
</div>

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

<div class="row">
    <?php echo $form->labelEx($model,'dtNasc'); ?>
    <?php echo $form->textField($model,'dtNasc'); ?>
    <?php echo $form->error($model,'dtNasc'); ?>
</div>

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

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

<div class="row">
    <?php echo $form->labelEx($model,'idFiliacao'); ?>
    <?php
        if ($model->isNewRecord) {
            $this->widget('bootstrap.widgets.TbSelect2', array(
                   'model' => $modelFiliacao,
                   'attribute' => 'idFiliacao', //'id' CAMPO A BUSCAR
                   'data' => CHtml::listData($modelFiliacao->findAll(), 'idFiliacao', 'nomePai', 'nomeMae'),
                   'htmlOptions' => array('placeholder' => 'Selecione a Filiação',),
                   )); //listData($modelDESEJADO->findAll(), 'CAMPO A SER MODIFICADO', 'CAMPO A MOSTRAR NO COMBOBOX')
        } else if (!$model->isNewRecord) {

            $qry = "SELECT filiacao.idFiliacao, nomePai, nomeMae from filiacao, identificacaoEmigrante where filiacao.idFiliacao = identificacaoEmigrante.idFiliacao";

            $result = Yii::app()->db->createCommand($qry)->queryAll();
            $data=CHtml::listData($result, 'idFiliacao', 'nomePai', 'nomeMae');

            $this->widget('bootstrap.widgets.TbSelect2', array(
                   'model' => $model,
                   'attribute' => 'idFiliacao', //'id' CAMPO A BUSCAR
                   'data' => CHtml::listData($modelFiliacao->findAll(), 'idFiliacao', 'nomePai', 'nomeMae'),
                   'htmlOptions' => array(
                                          'options' => $data,
                                          ),
                   ));
        }
    ?>

    <?php
        $this->widget(
              'bootstrap.widgets.TbButton',
              array(
                    'type' => 'primary',
                    'buttonType' => 'ajaxLink',
                    'label' => 'Adicionar nova Filiação',
                    'htmlOptions'=> array(
                        'onClick'=> 'saveSession()',
                    )
              ));
    ?>

    <?php echo $form->error($model,'idFiliacao'); ?>
</div>
<div class="row">
    <?php
        $this->widget(
              'bootstrap.widgets.TbButton',
              array(
                    'type' => 'primary',
                    'buttonType' => 'submit',
                    'label' => 'OK',
                    )
              );
    ?>
</div>
</div>
    <?php
        $this->endWidget();
    ?>
    </div><!-- form -->

我的站点控制器.php:

...
public function actionMyActionName() {
    Yii::app()->session['idE'] = $_POST['idE'];
    echo json_encode(array("ide"=>$_POST['idE']));
}
...

我的 Javascript (a.js) 代码:

function saveSession() {
$.ajax({
    type: "POST",
    //url: "/museu_emigracao/index.php?r=site/savesession",
    url: '/museu_emigracao/index.php?r=site/myActionName',
    data: {
        idE : $("#idE").val()
    },
    success: function (data) {
        console.log(data.idE);
    },
    error: function (data) {
      alert(data + 'erro');
    },
    dataType: null
});}

我测试了 dataType: JSON 和其他类似“文本”的类型,但我的代码没有返回任何内容,因此 null 值应该是正确的。

data.idE返回undefined,但是在chrome的debug中,它与value一起出现。

有什么建议吗?

谢谢。

【问题讨论】:

    标签: javascript php ajax yii undefined


    【解决方案1】:

    这是字母大小写问题的使用

    console.log(data.ide);
    

    或者

    echo json_encode(array("idE"=>$_POST['idE']));
    

    并将dataType: null 更改为dataType: 'json'

    【讨论】:

    • 感谢您的帮助,但没有任何改变。仍然显示未定义的值。
    • 将 dataType: null 改为 dataType: 'json'
    • 进入错误函数。我相信这应该是 null,因为我什么都不返回。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多