【发布时间】:2014-06-24 10:33:30
【问题描述】:
在 DDBB 内部有以下数据:
SELECT `addedat`, `catname`, `catkey` FROM `categorias`;
"2014-06-23" "Complementos" "complementos"
"2014-06-23" "Hombre" "hombre"
"2014-06-23" "Mujer" "mujer"
"2014-06-23" "Niños y bebes" "niños_y_bebes"
得到以下函数脚本:
public function listAllCategories(){
$ret = null;
$result = self::$ddbb->executeQuery(self::$dao->getQueryGetAllCategories());
if ($result && (mysql_num_rows($result) !== 0)){
$categories = array();
while($row = mysql_fetch_row($result)){
$aux = new Categoria();
$aux->setCatDate($row[0]);
$aux->setCatName($row[1]);
$aux->setCatKey($row[2]);
array_push($categories, $aux);
}//while
mysql_free_result($result);
$ret1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$ret1 .= "\n<categories>";
foreach($categories as $category){
$ret1 .= "\n\t<category>";
$ret1 .= "\n\t\t<addedat>".$category->getCatDate()."</addedat>";
$ret1 .= "\n\t\t<name>".$category->getCatName()."</name>";
$ret1 .= "\n\t\t<key>".$category->getCatKey()."</key>";
$ret1 .= "\n\t</category>";
}//foreach
$ret1 .= "\n</categories>";
$ret = trim($ret1);
}else{
$ret = new Error(self::$errorFilePath, "ERROR: no se pudo listar las categorias. MySQL = ".self::$ddbb->getError());
}
return $ret;
}
在这个函数之后,一个超级 'controller.php' 做以下事情:
header("Content-Type", "text/xml");
header_response_code(200);
echo $ret;
但脚本返回以下 XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<categories>
<category>
<addedat>2014-06-23</addedat>
<name>Niños y bebes</name>
<key>niños_y_bebes</key>
</category>
<category>
<addedat>2014-06-23</addedat>
<name>Niños y bebes</name>
<key>niños_y_bebes</key>
</category>
<category>
<addedat>2014-06-23</addedat>
<name>Niños y bebes</name>
<key>niños_y_bebes</key>
</category>
<category>
<addedat>2014-06-23</addedat>
<name>Niños y bebes</name>
<key>niños_y_bebes</key>
</category>
</categories>
而 jQuery 声称 无效的 XML
【问题讨论】:
-
检查您的编码,您设置的 HTTP 标头没有编码,因此客户端需要 latin1 或类似的,XML 文档然后声明 UTF-8 ...但是 ñ 是哪种编码?跨度>
-
完成,改成
header("Content-Type", "text/xml;charset=UTF-8"),同样的错误