Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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
Javascript PHP函数不在“之后显示字符串”&&引用;_Javascript_Php_Ajax - Fatal编程技术网

Javascript PHP函数不在“之后显示字符串”&&引用;

Javascript PHP函数不在“之后显示字符串”&&引用;,javascript,php,ajax,Javascript,Php,Ajax,我正在使用CI和windows 7。 从我的视图文件中,我正在调用控制器中的ajax中的一个函数。 在我的ajax中,我以Pack&Send的形式传递一个字符串,但当我在控制器函数中回显相同的字符串时,它只是回显Pack 我的ajax调用看起来像 <script> $(document).ready(function(){ $("select#items").change(function(){ var country_id =

我正在使用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

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

&
是一个特殊的字符:它用于。例如,
?var1=x&var2=y

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

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

我认为你的问题和这个问题一样:

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

以下是文件:

您的代码:

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

在将字符串传递给ajax之前,尝试对其进行URL编码。当您删除
时,它是否有效?请尝试此操作<代码>数据:“country\u id=“+encodeURI(country\u id)”
jQuery接受对象作为其数据设置,因此您可以让它进行转义:
data:{“country\u id”:country\u id},
我不明白,在您的示例中,
country\u id
类似于第一个示例中的
var1
。所以不会有
&
,因为只有参数?@a.L正确。但是如果变量
country\u id
中有
&
,则第二部分(在
&
之后)将被视为
var2
。好的,我知道了,谢谢。我感到困惑的是,
country\u id
应该是一个数字(就像大多数id一样),而不是一个字符串。
data:"country_id="+encodeURIComponent(country_id),