La function PHP no muestra cadena después de "&"

Estoy usando CI y Windows 7. Desde mi file de vista estoy llamando a una function en ajax que está en el controller. En mi ajax estoy pasando una cadena como Pack & Send , pero cuando hago eco de la misma cadena en la function del controller solo hace eco de Pack .

Mi llamada ajax parece

 <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> 

En alerta obtengo una cadena completa, es decir, Pack & Send .

Ahora mi function php en el controller

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

Aquí solo echos Pack

Pensé que podría deberse a un carácter especial. Pero supongo que esa no es la escena, ya que intenté cambiar & a, % , ' , \ , \& y así sucesivamente, en estos casos obtengo una cadena completa.

& es un caracter especial: se usa en cadenas de consulta . Por ejemplo ?var1=x&var2=y .

Necesita codificar URL su variable antes de enviarla a través de HTTP:

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

Creo que tienes el mismo problema que esta pregunta: escaping de todos los caracteres especiales en una cadena enviada por jquery ajax

El "&" es un personaje especial y necesitas escaping de él (no estoy seguro del carácter espacial, pero es lo mismo). Utilice esta function (encodeURIComponent) que escapa a todos los caracteres excepto dígitos alfabéticos, decimales, – _. ! ~ * '()

Aquí está la documentation: coddeURIComponent

Tu codigo :

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