在使用包含特殊字符的JSON填充的select选项上获取NULL

时间:2015-09-17 11:55:38

标签: php json select special-characters populate

我从JSON填充<select>。 问题是当来自mysql数据库的值具有ÑÁ等特殊字符时,我在NULL中获得<select>。< / p>

这是我的JS代码:

function llenarEspecialidad()
{
    var espec =  $("#comboEspecialidad").val();
    var $select = $("#comboMedicoIC");
    document.formAgregar.comboMedicoIC.length=0;
    document.formAgregar.comboMedicoIC.options[0] = new Option("Seleccione","0","defaultSelected","");

    $(function(){
        var items="";
        $.getJSON("internacionLlenarMedicos.php?&idEspecialidad="+espec,function(data){
            $.each(data,function(index,item) 
            {
                items+="<option value='"+item.idMedico+"'>"+item.Medico+"</option>";
            });
            $select.append(items);
        });
    });
};

这是服务器端代码:

$espe = $_REQUEST["idEspecialidad"];
$sql_depto = "SELECT idMedico, CONCAT(apellido, ',', nombre) As Medico FROM medicos where activo is Null and ( (".$espe."=0) or (".$espe."<>0 and ".$espe." = idEspecialidad  ) ) ORDER by apellido ASC";
$rs_depto = mysql_query($sql_depto, $conexion);
$data = array();
while($row_depto = mysql_fetch_assoc($rs_depto))
    $data[] =$row_depto;
echo json_encode($data);

两个PHP文件都是ANSI编码的,我不能用UTF-8编码,因为如果我这样做,那么就会出现其他问题。

1 个答案:

答案 0 :(得分:0)

问题是json_encode仅适用于utf-8字符串,否则它将返回null,因此您必须对其进行编码。

所以你可以尝试utf8_decode

// this is just an example for one dimensional arrays
$your_array = array_map( "utf8_decode" , $your_array );

如果这不起作用,你必须检查你的数据库字符集或整理并使用mb_convert_encoding