我正在使用jQuery / JS / Ajax脚本从我的数据库中动态填充SELECT框,每个后续的SELECT框都是根据之前的SELECT填充的。
例如。 有人从我的第一个SELECT中选择“England”,然后在英格兰等城镇填充下一个SELECT。
我遇到的麻烦是让第二个SELECT函数识别变量。 这是很多代码,所以我不想粘贴它,但是……这是第一个在页面加载时填充第一个SELECT框的函数:
function getTierOne() { $tblname = $_SESSION['country']; $result = mysql_query("SELECT DISTINCT county FROM $tblname ORDER BY county") or die(mysql_error()); while($tier = mysql_fetch_array( $result )) { echo ''.$tier['county'].''; } }
这很好,$ tblname是一个包含用户country,obvs的已发布$ _SESSION变量。
问题是第一个SELECT框的’onBlur’,第二个SELECT框是使用这个JS函数和PHP调用启动的:
$(document).ready(function() { $('#wait_1').hide(); $('#drop_1').change(function() { $('#wait_1').show(); $('#result_1').hide(); $.get("func.php", { func: "drop_1", drop_var: $('#drop_1').val() }, function(response) { $('#result_1').fadeOut(); setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400); }); return false; }); });
…
if (isset($_GET['func'])&& $_GET['func'] == "drop_1") { drop_1($_GET['drop_var']); }
哪个叫这个function:
function drop_1($drop_var) { include_once('functions.php'); $result = mysql_query("SELECT DISTINCT town FROM $tblname WHERE county='$drop_var'") or die(mysql_error()); echo ' Select Your Town/Nearest Town'; while($drop_2 = mysql_fetch_array( $result )) { echo ''.$drop_2['town'].''; } echo ''; echo ''; }
但是这个函数不会识别我的$ tblname变量,即使我使用Global! 它识别的唯一变量是$ drop_var,它是第一个SELECT框的结果。
有谁知道如何将$ tblname变量传递给
function drop_1($drop_var) { ...
如果您正在使用PHP会话来存储用户的国家(并且从getTierOne(的line1)看起来像你的那样),那么您应该能够将该行添加到drop1()PHP函数的开头:
function drop_1($drop_var) { $tblname = $_SESSION['country']; include_once('functions.php'); ...
Jquery应该发送你的用户的cookie以及GET参数(func和dropvar),这允许PHP知道哪个会话属于用户,并将其会话变量返回给他们(你可以使用Firebug的“网络”选项卡进行检查) / Chrome检查器 – 在onBlur触发并查找“Cookie”请求标头后查找对func.php的调用。
或者,如果您没有使用会话,但是您将国家/地区存储在客户端(例如,作为第一个“drop_0”选择框?),您可以让jquery传递来自tier1(县)选择框的选择来电。 即。
$.get("func.php", { func: "drop_1", country: "VALUE OF COUNTRY HERE", drop_var: $('#drop_1').val() }, function(response) { ...
并修改您的服务器端PHP代码以接受2个参数而不是一个。
从可维护性的角度来看,请考虑不使用多个表(每个国家/地区一个),而是使用带有其他“国家/地区”列的单个表。 拥有多个结构相同的表几乎不是一个好主意,MySQL通常比数百个表更好地处理数百万行,并且它使得连接和更改表的结构变得更加困难。 您还应该清理输入,而不是直接在SQL查询中使用$ GET [‘drop_var’],否则它将在引号上打破并打开SQL注入攻击。 (如果你有充分的理由去做其中任何一项道歉:显然你比我更了解你的具体要求!)
需要了解更多jQuery教程分享使用jQuery动态链接的SELECT框,都可以关注jQuery技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是jQuery教程分享使用jQuery动态链接的SELECT框相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/jquerytutorial/982786.html