【问题标题】:passing php variable from controller to javascript function [duplicate]将php变量从控制器传递给javascript函数[重复]
【发布时间】:2014-05-14 10:01:38
【问题描述】:

我无法将变量从代码点火器控制器传递给 javascript 变量

我有一个控制器,它运行一个模型来返回一个数字

$tot_count = $this->model_users->tot_count();

在视图的标题中,我试图获取 $tot_count 的值。我已经尝试了几件事,但我无法将值传递为

$(document).ready(function(){
    var total_count = <?php $tot_count;?>

        alert("Value: " + total_count);
    });

但一无所获,请帮忙!

【问题讨论】:

  • var total_count = '&lt;?php echo $tot_count;?&gt;';有帮助吗?
  • var total_count = &lt;?php $tot_count;?&gt; 应该是var total_count = &lt;?php echo $tot_count;?&gt;
  • 我已经尝试过回显,它也不起作用 var total_count = ; alert("值:" + total_count);我也试过 var total_count = '';但它不起作用。是不是因为我使用的是

标签: javascript php codeigniter


【解决方案1】:
<?php echo $tot_count;?>

你没有回应任何东西。您需要使用 echo 或任何向输出发送内容的指令。

【讨论】:

  • 我已经尝试过回显它也不起作用,当我使用回显时系统不会发出警报消息,如果我不使用回显至少我会收到一个弹出警报但没有传递值
  • 它不起作用,因为你必须在某个地方出错,尝试回显一个数字而不是一个变量,看看它是否有效。
  • 是的,但不能将变量值从控制器传递到 javascript 变量。这些语法无法获取值。我用
【解决方案2】:

这可能是一个愚蠢的建议,但请尝试在变量声明后放置一个分号:

var total_count = <?php $tot_count;?>;

如果你没有关闭它,那么警报可能已分配给变量..

【讨论】:

  • 对不起,我试过这也不起作用,我看到你需要单引号或双引号才能使警报起作用,否则也不会显示警报弹出窗口。 var total_count = '';当我从控制器回显值时,可以清楚地看到分配给它的数字 22,但它不能传递给 Javascript 变量:(
【解决方案3】:

试试

var total_count = '<?php echo $tot_count;?>';

而不是建议

var total_count = <?php $tot_count;?>;

【讨论】:

  • 如果$tot_count是一个整数,引号(')会将它转换成一个字符串。
【解决方案4】:

我已经解决了这个问题,希望这对将来的人有用。

您可以考虑的另一种选择是将 Javascript 所需的变量添加到您视图中的某种 HTML 元素中,然后使用 JS 提取该变量,然后用它做任何您需要的事情。

从控制器回显 div id = 'demo' 中的值,然后从 Javscript 调用。

var total_count = 0;
total_count = document.getElementById("demo").innerHTML; 
document.getElementById("demo").innerHTML = ''; 
// this is to not display the value but to capture into a Javscript variable and use it and not display from echoed value from controller.

就是这样!

【讨论】:

  • 注意不要为了保存数据而创建额外的元素——这是可以避免的 DOM 膨胀。
【解决方案5】:

有很多方法可以做到这一点。

1.您可以使用ajax直接向服务器请求变量。这提供了更好的层分离。

2.您可以将控制器变量绑定到DOM元素并在javascript中获取值。

<input type="hidden" id="total_count" value="{{ total_count }}" />
var total_count = $("#total_count").val();

此操作速度很快,因为您可能不希望每次都显式发送对变量的请求。

3.或者直接在js变量中回显

var total_count = <?php echo $total_count; ?>; 

这种方法虽然简单,但是将表现层与控制器紧密绑定,不安全。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-11
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多