我正在开发一个 Joomla 模块,其中有几个参数来定义它的工作方式。我的模块区域中有按钮,按钮必须与这些参数交互。这是模块 PHP 代码:
<?php
defined('_JEXEC') or die('Direct Access to this location is not allowed.');
$AdVisualV2jMODPHP_ver='0.3.0070';
$Station_ID = $params->get('Station_ID');
$Verbose = $params->get('Verbose');
$Bk_ColorODD = $params->get('Bk_ColorODD');
$Bk_ColorEVEN = $params->get('Bk_ColorEVEN');
$Ink_ColorODD = $params->get('Ink_ColorODD');
$Ink_ColorEVEN = $params->get('Ink_ColorEVEN');
$PicCol_Title = $params->get('PicCol_Title');
$TxtCol_Title = $params->get('TxtCol_Title');
$EvPic_Heightpx = $params->get('EvPic_Heightpx');
$EvPic_Widhtpx = $params->get('EvPic_Widhtpx');
$CatPic_Heightpx = $params->get('CatPic_Heightpx');
$CatPic_Widhtpx = $params->get('CatPic_Widhtpx');
$Pic_Hspanpx = $params->get('Pic_Hspanpx');
$Pic_Vspanpx = $params->get('Pic_Vspanpx');
$TitleSw = $params->get('TitleSw');
$MenuPos = $params->get('MenuPos');
$Paging = $params->get('Paging');
$Sort_Field = $params->get('Sort_Field');
$Sort_Order = $params->get('Sort_Order');
$db_host = "localhost";
$db_user = "xxxx";
$db_database = "xxxxx";
$db_password = "xxxxx";
$db_tabconfig = "xxxxxxx";
$db_tabpreroll = "xxxxxxxxxxx";
echo 'AVVIAMO LA PROCEDURA 0.0.090 - '.$Station_ID.'<br><br>';
echo '<div id="TabellaEventi"></div>';
echo '<INPUT Type="BUTTON" VALUE="Avanti" ONCLICK="avanti()"> ';
echo '<INPUT Type="BUTTON" VALUE="Indietro" ONCLICK="indietro()"> ';
echo '<br>';
?>
当用户单击“Avanti”或“Indietro”按钮时,我调用 JAVASCRIPT 函数 avanti() 和 indietro(),这两个函数将使用上述所有参数。我该如何传输如此大量的变量?
还有!!!这两个 Javascript 函数必须调用其他 PHP 文件才能与 MySql 数据库交互,并且我将再次或多或少地需要其他文件中的所有变量。
互联网编程有时真是一团糟......
最佳答案
可能不需要 Ajax。将所有变量放入一个大数据数组中
$data['Station_ID'] = $params->get('Station_ID');
$data['Verbose'] = $params->get('Verbose');
...
$data = json_encode($data);
$data = htmlentities($data);
...
echo '<INPUT Type="BUTTON" VALUE="Avanti" ONCLICK="avanti(' . $data . ')"> ';
现在 avanti 包含一个 JSON 对象作为第一个参数
编辑:因为 JSON 字符串可能包含 "
和<
您必须调用htmlentities
保护你的字符串
关于php - 如何将大量参数从 PHP 传递到 Javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093662/