我正在使用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
&
更改为%
,'
,\
,\&
等等,在这些情况下我得到整个字符串。
答案 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),