【问题标题】:PHP function does not display string after "&"PHP函数在“&”之后不显示字符串
【发布时间】:2015-05-18 10:58:10
【问题描述】:

我正在使用 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 &amp; Send

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

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

这里只是呼应Pack

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

【问题讨论】:

  • 在将字符串传递给 ajax 之前尝试对字符串进行 URL 编码。删除&amp;后是否有效?
  • 试试这个。 data: "country_id="+encodeURI(country_id),
  • jQuery 接受对象作为其数据设置,因此您可以让它进行转义:data: {"country_id": country_id},

标签: javascript php ajax


【解决方案1】:

&amp; 一个特殊字符:它用于query strings。例如,?var1=x&amp;var2=y

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

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

【讨论】:

  • 我不明白,在您的示例中,country_id 类似于您的第一个示例中的var1。所以不会有&amp;,因为只有参数?
  • @A.L 正确。但是,如果 变量 country_id 中有一个&amp;,则第二部分(在&amp; 之后)将被视为var2
  • 好的,我明白了,谢谢。我很困惑country_id 应该是一个数字(就像大多数 id),而不是一个字符串。
【解决方案2】:

我认为你和这个问题有同样的问题:Escape all special characters in a string that is sent by jquery ajax

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

这是文档:encodeURIComponent

你的代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-11
    相关资源
    最近更新 更多