我从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编码,因为如果我这样做,那么就会出现其他问题。
答案 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