在我的javascript中,我试图通过html名称标签传递一个php变量。 html将附加到我选择的选项中。
$("#a"+$selected.val()).append('<input type="hidden" name="<?php echo $event_id; ?>" value="'+$selected.text()+'">');
这是整个js函数,用于查看http://laravel.io/bin/Edz25
的内容现在,我知道一个事实,并且在我的视图中测试过$ event_id通过在我的控制器中执行以下操作并在视图中回显变量来返回数组。
print_r($event_id);
die();
控制器:
$data['event_id'] = $this->model_location->get_event_id();
型号:
public function get_event_id()
{
$this->db->select('id');
$query = $this->db->get('table_eventcards');
return $query->result_array();
}
现在我不确定为什么我的javascript中的变量没有输出任何内容。
这是检查元素时的输出。
<li data-value="28" id="a28">Event title<input type="hidden" name="<?php echo $event_id; ?>" value="Event title"></li>
如果这有助于我的控制台日志http://postimg.org/image/owtz3v8h7/
我真的需要解决这个问题并感谢所有帮助。
答案 0 :(得分:1)
HTML中包含的.js文件不会被PHP解析,为此,您可以使用&lt;脚本&GT;标签和写这个变量,例如:
首先,在php文件中编写变量:
mypage.php
<script>
var MY_VAR = "<?php echo $myVar; ?>";
<script>
<script type="text/javascript" src="my_script.js"></script>
然后你可以在你的js文件中使用这个变量:
my_script.js
$("#a"+$selected.val()).append('<input type="hidden" name="' + MY_VAR + '" value="'+$selected.text()+'">');
经过测试的例子:
<?php
$myVar = 1;
?>
<script>
var MY_VAR = "<?php echo $myVar; ?>";
alert(MY_VAR);
</script>
警报输出将是&#34; 1&#34;
答案 1 :(得分:0)
CodeIgniter's result_array()
will return a multidimensional array.
您的ActiveRecord查询似乎没有包含任何过滤(没有WHERE子句),因此有可能返回几行。
即使表中只有一行,结果集也会像这样:
array (
array(
'id' => 1
)
)
Ergo,$data['event_id']
(在控制台中)和$event_id
(在视图中)将包含上述数据结构。
有关变量命名的一些建议...如果变量包含多个变量(又称为isIterable),则使用复数变量名称,以免使脚本的未来开发人员感到困惑(下一个开发人员实际上可能是您)。
更令人困惑的是,您似乎正在尝试将隐藏输入的名称分配为数组-我真的不明白这里的意图。
如果要特定的id
,则需要将其从数组中拉出。如果要迭代id
的数组,则需要调整js流程。
无论哪种方式,如果将数据从服务器端(php)传递到客户端端(javascript),从长远来看,如果使用json_encode()
,您将获得稳定的成功(避免引用和引用转义问题) )。
<script>
let event_id = <?php echo json_encode($event_id); ?>;
</script>
然后确保在视图呈现以上javascript声明后加载将使用event_id
的外部脚本。