Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Smarty通过函数传递javascript变量?_Javascript_Smarty - Fatal编程技术网

如何使用Smarty通过函数传递javascript变量?

如何使用Smarty通过函数传递javascript变量?,javascript,smarty,Javascript,Smarty,我试图通过Smarty将参数传递给函数。像这样: $('#buttonClose').click(function(){ var name = document.getElementById('nameSpan').value; {$person->addName(name)} }); 但是它传递的是值“name”,而不是变量name的实际值 如何获取函数addName中变量name的实际值 提前谢谢 所有Smarty代码都在服务器上运行,而不是在客户端上运行。如果Jav

我试图通过
Smarty
将参数传递给函数。像这样:

$('#buttonClose').click(function(){
    var name = document.getElementById('nameSpan').value;
    {$person->addName(name)}
});
但是它传递的是值“name”,而不是变量
name
的实际值

如何获取函数
addName
中变量
name
的实际值


提前谢谢

所有Smarty代码都在服务器上运行,而不是在客户端上运行。如果Javascript中有Smarty函数调用,它们将在呈现页面时运行,而不是在客户端浏览器中调用函数/事件时运行。如果要从Javascript运行PHP调用,必须创建一个PHP端点,例如
addname.PHP
,并使用AJAX请求调用它

$('#buttonClose').click(function(){
    var name = document.getElementById('nameSpan').value;
    $.post( "addname.php", { name: name, person: person_id } );  
});

不能将客户端值分配给smarty变量,因为smarty是在服务器上运行的模板语言。Smarty分配只能在服务器端完成,也就是说,可以从PHP完成。例如:

$smarty->assign('timestamp',time());
所以你能做的是:

$smarty->assign('timestamp',time()); //in your PHP script

//in your JS
var currentTS = {$timestamp};

请参见

客户端与服务器。不工作JQuery中的PHP将无法工作。@阿米特:那么,我应该在javascript上这样做吗?@MHakvoort是的,它可以工作。这就是
Smarty
的目的,我使用了另一个没有参数的函数,可以将PHP和JQuery结合起来正常工作。Smarty不能使用客户端变量,比如JavaScript创建的变量。