Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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
Php 如何在codeigniter中编写jquery_Php_Jquery_Ajax_Codeigniter - Fatal编程技术网

Php 如何在codeigniter中编写jquery

Php 如何在codeigniter中编写jquery,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,我有以下控制器和视图。我正在尝试学习codeigniter中的jquery 代码不起作用。所以我希望有人能发现我做错了什么并纠正我 提前谢谢 class PhpJqueryBook extends Controller { function __construct() { parent::Controller(); } public function index() { ... } function dynamic_select_boxes(){ $this->

我有以下控制器和视图。我正在尝试学习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 '<select name="city"><option>'.join('</option>  <option>',$cities).'</select>';
}
}
类PhpJqueryBook扩展控制器
{
函数_u构造()
{
父::控制器();}
公共职能指数()
{
...    }
函数动态选择框(){
$this->load->view('dynamic_select_box');
}
函数get_cities(){
开关(@$_POST['country']){
案例“ie”:/{爱尔兰
$cities=数组('Cork'、'Dublin'、'Galway'、'Limerick',
‘沃特福德’;
打破
// }
“联合王国”案:/{联合王国
$cities=数组('Bath'、'Birmingham'、'Bradford',
“布莱顿和霍夫”、“布里斯托尔”,
“剑桥”、“坎特伯雷”、“卡莱尔”,
“切斯特”、“奇切斯特”、“考文垂”,
“德比”、“达勒姆”、“伊利”、“埃克塞特”,
“格洛斯特”、“赫里福德”、“赫尔河畔的金斯敦”,
/*不停地*/
“纽波特”、“圣大卫”、“斯旺西”);
打破
// }
默认值://{else
$cities=false;
// }
}
如果(!$cities)回应“请先选择一个国家”;
else echo“”。加入(“”,$cities)。“”;
}
}
views/dynamic_select_box.php

<?php $this->load->view('inc/header')?>

<form>
<table>
<tr><th>Country</th><td>
<select name="country" id="country">
<option value=""> -- please choose -- </option>
<option value="ie">Ireland</option>
<option value="uk">Great Britain</option>
</select>
</tr>
<tr>
<th>Cities</th>
<td id="cities">please choose a country first</td>
</tr>
</table>
<?php $this->load->view('inc/footer')?>

国家
--请选择--
爱尔兰
大不列颠
城市
请先选择一个国家
这将生成以下html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <base href="http://127.0.0.1/ci_jquery/">
</head>
<body>

<form>
<table>
    <tr><th>Country</th><td>
    <select name="country" id="country">
    <option value=""> -- please choose -- </option>
    <option value="ie">Ireland</option>
    <option value="uk">Great Britain</option>
    </select>
    </tr>
    <tr>
    <th>Cities</th>
    <td id="cities">please choose a country first</td>
</tr>
    </table>
   <script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>


<script type="text/javascript">
    $(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);
        }       
        </script>


</body>
</html>

国家
--请选择--
爱尔兰
大不列颠
城市
请先选择一个国家
$(文档).ready(设置\国家/地区\更改);
功能设置\国家/地区\变更(){
$(“#国家”)。更改(更新城市);
}
功能更新(城市){
var country=$(“#country”).attr('value');
$.get('phpjquerybook/get_cities/'+国家/地区,显示城市);
}
功能展示城市(res){
$('#cities').html(res);
}       

这是因为你试图识别城市的方式。您将通过Ajax和Jquery在此行发送GET请求:

$.get('phpjquerybook/get_cities/'+country, show_cities);
switch(@$_POST['country'])
但是,在您的
get_cities()
函数中,您正在检查请求国家的
$\u POST
<如果您发送GET请求,code>$\u POST将为空

这里最好的做法是更改这一行:

$.get('phpjquerybook/get_cities/'+country, show_cities);
switch(@$_POST['country'])

另一种解决方案是将JQuery调用改为
$.post()


我强烈建议您在开发这两个操作符时不要使用
@
操作符,除非您确实需要它来实现特定功能。如果没有抑制未设置
$\u POST['country']
的错误,您可能会注意到这一点。修复错误比抑制错误更好。

要获取控制器方法中的第三个参数,可以轻松使用该方法的参数获取这些错误,或者使用uri类获取段。在第一种情况下,您将使用

function get_cities($country = null){

    switch($country){

    ....

有关和,请参阅codeigniter用户指南。

这是错误的,原因如下:1。见我的答案和2。GET参数由CI输入类过滤,请参阅