在jquery中无法识别PHP变量

时间:2014-09-30 19:42:19

标签: javascript jquery codeigniter

在我的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/

我真的需要解决这个问题并感谢所有帮助。

2 个答案:

答案 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的外部脚本。