PHP函数在“&”之后不显示字符串

时间:2015-05-18 10:58:10

标签: javascript php ajax

我正在使用CI和Windows 7。 从我的视图文件中,我在ajax中调用一个函数,它位于控制器中。 在我的ajax中,我传递的字符串为Pack & Send,但是当我在控制器函数中回显相同的字符串时,它只是回显Pack

我的ajax电话看起来像

<script>
      $(document).ready(function(){
        $("select#items").change(function(){
            var country_id =  $("select#items option:selected").attr('value'); 
            $("#state").html( "" );
            $("#city").html( "" );
            if (country_id.length > 0 ) { 
             $.ajax({
                    type: "POST",
                    url: "<?php echo site_url('ga_api/sample/ajax_second_dropdown');?>",
                    data: "country_id="+country_id,
                    cache: false,
                    beforeSend: function () { 
                        $('#state').html('<img src="<?php echo IMAGE_PATH;?>loader.gif" alt="" width="24" height="24">');
                    },
                    success: function(html) {    
                        $("#state").html( html );
                    }
                });
            } 
          alert(country_id);
        });
      });
    </script>

在提示时,我会收到整个字符串,即Pack & Send

现在我的控制器中的php函数

function ajax_second_dropdown()
{
    echo $_POST["country_id"]; 
}

这里只是回声Pack

我认为可能是因为特殊的性格。但我猜这不是场景,因为我尝试将&更改为%'\\&等等,在这些情况下我得到整个字符串。

2 个答案:

答案 0 :(得分:6)

& 一个特殊字符:它在query strings中使用。例如,?var1=x&var2=y

在通过HTTP发送变量之前,您需要对变量进行URL编码:

data: "country_id="+encodeURIComponent(country_id),

答案 1 :(得分:1)

我认为您遇到与此问题相同的问题:Escape all special characters in a string that is sent by jquery ajax

“&amp;”是一个特殊的角色,你需要逃避他(我不确定空间角色,但它是一样的)。使用此函数(encodeURIComponent)可以转义除字母,十进制数字,_之外的所有字符。 ! 〜*'()

以下是文档:encodeURIComponent

您的代码:

data:"country_id="+encodeURIComponent(country_id),