我有一段JavaScript代碼,帶有一個ajax請求,可以打印出在IE8中不起作用的XML文件的內容。 我遇到了一些建議,當我GOOGLE了這個問題,我已經嘗試了那些似乎與我正在嘗試做的事情相關的東西。我將下面一行添加到我的.htaccess文件中:AddType application/xml .xml .rss;我爲我的代碼添加了overridemimetype,並在我的xml文件的開頭添加了以下行:header('Content-type:text/xml')。這些都不會對IE8的輸出產生任何影響,但是將內容類型行添加到XML文件中會停止它在Firefox中的使用。我以爲我必須誤解有關內容類型的內容,所以我試圖將它包含在創建XML文件的php文件中。當我把它放在PHP文件的開頭時,我得到了這個警告:警告:不能修改標題信息 - 已經發送的標題。我試圖在創建XML文件的函數的開頭,但沒有任何效果。我正在使用的代碼是Ajax和Internet Explorer
<html>
<head>
<body>
<script type ="text/javascript">
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else //
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
if (xhttp.overrideMimeType)
xhttp.overrideMimeType('text/xml')
xhttp.open("GET","captions_7.xml",false);
xhttp.send();
xmlDoc=xhttp.responseXML;
if(xmlDoc)
{
document.write("ok");
//in ie ok prints
}
else
{
document.write("failed");
}
elements = xmlDoc.getElementsByTagName("p");
length = elements.length;
for (var i=0; i<length ; i++)
{
//caption text
document.write(xmlDoc.getElementsByTagName("p")[i].childNodes[0].nodeValue + "<br />");
//start time
document.write(xmlDoc.getElementsByTagName("p")[i].getAttribute("begin")+ "<br />");
//end time
document.write(xmlDoc.getElementsByTagName("p")[i].getAttribute("end")+ "<br />");
}
</script>
</body>
</html>
在IE8中,該文件的唯一輸出是OK。在Firefox,Opera和Chrome中,顯示XML文件的內容。我在驗證器中檢查了XML文件,並且報告沒有錯誤,所以我不認爲這是問題所在。我真的很感激,如果有人知道這個解決方案或有什麼我可以嘗試的建議。
在情況下,它是很重要的,這是創建XML文件中的函數:我很新的這一切
function createXML($referenceId){
header('Content-type: text/xml');
$content_id = $referenceId;
$XMLStart="<tt xml:lang=\"en\"><head><layout/></head><body><div xml:id=\"captions\">";
$XMLEnd = "</div></body></tt>";
$text;
$captionQuery = "SELECT caption_text, start_time, end_time FROM captions WHERE content_id = $content_id ORDER BY start_time ASC;";
$captionResult = mysql_query($captionQuery);
if(mysql_num_rows($captionResult)){
while($row = mysql_fetch_array($captionResult)){
$text.="<p begin=\"".$row[start_time]."\" end=\"".$row[end_time]."\">".$row[caption_text]."</p>";
}
}//end if
$XMLString = $XMLStart.$text.$XMLEnd;
$captionsFile="captions_".$content_id.".xml";
$captionsFileHandle = fopen($captionsFile, w) or die("can't open file");
fwrite($captionsFileHandle, $XMLString);
fclose($captionsFileHandle);
return $captionsFile;
}
所以道歉,如果這是個很愚蠢的問題。我認爲這一定每天要做好幾千次,但我不明白我能做些什麼來解決它。
快速提示:您是否在用於提供xml的php腳本之前和之後檢查了空白字符?不會使發送的xml無效,但會阻止發送標頭的機會 – Eineki 2011-05-04 18:11:48
IE非常積極地緩存GET請求。除非添加時間戳或查詢字符串唯一或使用POST,否則IE很可能不會返回更新的數據。 – 2011-05-04 19:17:31