在文本字段中获取null vaue(在json解码的帮助下获取)

时间:2018-02-01 14:15:27

标签: php json

我正在实现用户可以更新其个人资料的功能。当用户单击“更新配置文件”时,将显示表单和文本字段,并将其所有值返回给用户。

但我无法获得“兴趣字段”,其中我将值编码为JSON并将其存储在数组字符串中。现在,在文本字段中检索它时,我使用json_decode,这有助于我在文本字段中写入值。但是,一旦用户点击“保存”然后点击“更新”,所有值都将为空。

对于多个兴趣,文本字段由用户动态添加。这是我写的代码:

<div class="form-group" id="area_interest"> 
    <h4>Area of Interest</h4>
            <div style="display:inline-block">
                <? $interest = json_decode($model->profile->interest,true) ? : [];

                foreach($interest as $area_int) {  ?>
                        <label>Enter Interest:</label>
                        <input name="$area_int" type="text" value="<?= $area_int ?>"/>                        
                <? } 
                <div style="display:inline-block">
                    <input type="button" value="Add More Interest" onClick="addTextArea();">
                </div>

            </div>
</div>

动态添加更多文本框的功能:

function addTextArea(){
var div = document.getElementById('interests');

  div.innerHTML += "<label>Enter Interest</label>"
  div.innerHTML += '<?php echo $model->form->textBoxFor("interests[]"); ?> ';
  div.innerHTML += "\n<br />";
}

该函数中的代码是:

$interests = isset($_POST['interests']) ? $_POST['interests']: [];
$_POST['interests'] = json_encode($interests);

我应该怎么写名字? 我不知道在哪里错过了一些重要的观点。非常感谢帮助。 TIA。

1 个答案:

答案 0 :(得分:0)

<input name="$area_int" type="text" value="<?= $area_int ?>"/>

我认为名称是问题,如果在函数中你正在访问它应该有效的$_POST['$area_int']值,但如果你正在访问$_POST['area_int'],那么将找不到该值。

希望我的回答能帮到你。

-----评论后的所有这些-----

我看到方法$model->form->textBoxFor("interests[]")正在使用该方法允许你创建一个新输入,所以我猜它echo一个允许的javascript函数,如果输入是{{1 }}

在控制器上的功能中,您可以将其设为interests[],其中包含表单中添加的所有$_POST['interests'],因此如何获取这些值?

当输入的名称为interests时,php会将这些输入接受为数组,因此当您访问nameOfTheInput[]时,您正在获取

$_POST['interests']

之后你应该处理这些值。

希望我的回答能帮到你。 但请尝试具体说明代码的工作方式。