如何在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')?> 
Country -- please choose -- Ireland Great Britain
Cities please choose a country first
load->view('inc/footer')?>

这会产生以下HTML。

        
Country -- please choose -- Ireland Great Britain
Cities please choose a country first
$(document).ready(setup_country_change); function setup_country_change(){ $('#country').change(update_cities); } function update_cities(){ var country=$('#country').attr('value'); $.get('phpjquerybook/get_cities/'+country, show_cities); } function show_cities(res){ $('#cities').html(res); }

要在控制器的方法中获取第三个参数,您可以轻松地使用方法的参数来获取这些参数,或者使用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']未设置的错误,你会注意到这一点。 修复错误比抑制错误更好。