如何在codeigniter中编写jquery代码
我有以下控制器和视图。 我正在尝试在codeigniter中学习jquery。
代码不起作用。 所以我希望有人发现我做错了什么并纠正我。
提前致谢。
class PhpJqueryBook extends Controller { function __construct() { parent::Controller(); } public function index() { ... } function dynamic_select_boxes(){ $this->load->view('dynamic_select_boxes'); } function get_cities(){ switch(@$_POST['country']){ case 'ie': // { ireland $cities=array('Cork', 'Dublin', 'Galway', 'Limerick', 'Waterford'); break; // } case 'uk': // { United Kingdom $cities=array('Bath', 'Birmingham', 'Bradford', 'Brighton & Hove', 'Bristol', 'Cambridge', 'Canterbury', 'Carlisle', 'Chester', 'Chichester', 'Coventry', 'Derby', 'Durham', 'Ely', 'Exeter', 'Gloucester', 'Hereford', 'Kingston upon Hull', /* and on and on! */ 'Newport', 'St David\'s', 'Swansea'); break; // } default: // { else $cities=false; // } } if(!$cities)echo 'please choose a country first'; else echo ''.join(' ',$cities).''; } }
意见/ dynamic_select_boxes.php
load->view('inc/header')?>
这会产生以下HTML。
要在控制器的方法中获取第三个参数,您可以轻松地使用方法的参数来获取这些参数,或者使用uri类来获取段。 在第一种情况下你会使用
function get_cities($country = null){ switch($country){ ....
请参阅codeigniter userguide以将uri参数传递给控制器和uri库 。
这是因为你试图识别这座城市的方式。 您正在通过Ajax与Jquery在此行发送GET请求:
$.get('phpjquerybook/get_cities/'+country, show_cities);
但是,在get_cities()
函数中,您正在检查所请求国家/地区的$_POST
。 如果您要发送GET请求, $_POST
将为空。
这里最好的办法是改变这一行:
switch(@$_POST['country'])
至
switch($_GET['country'])
另一种解决方案是将JQuery调用修改为$.post()
。
我强烈建议您在开发时不要使用@
运算符,除非您确实需要它来实现特定function。 如果你没有压制关于$_POST['country']
未设置的错误,你会注意到这一点。 修复错误比抑制错误更好。