有一組支持原型的ajax代碼,可以在IE以外的所有瀏覽器中使用。在IE8中,JSON會返回到Ajax.Request中指定的onSuccess處理函數中,並被扔到文件下載流中,該流將彈出並提示下載位置。Internet Explorer 8中的Prototype Ajax.Request問題提示文件下載
askForm = $('askForm');
var askUrl = '.';
var askParameters = askForm.serialize(true);
askForm.disable();
var askAjax = new Ajax.Request(
askUrl, {
method: 'post',
parameters: askParameters,
onSuccess: handleResults,
onFailure: handleError
}
);
function handleError(transport) {
alert('Please refresh this page, an error occurred in processing at the server.');
}
function handleResults(transport) {
...
}
handleResults函數中有更多的代碼,但是這個函數永遠不會被調用。經過調試後,在調用Ajax.Request函數時會出現下載提示。
文件名IE8提示每次下載更改,4個看似隨機的十六進制值(8個字符),沒有文件擴展名。和文件的內容從服務器純JSON響應...
{"question": ["Enter your question*"], "name": ["Enter your name (First L.)*"], "sender": ["Enter your e-mail*"]}
會非常感激這裏的任何提示。這發生在Snow Leopard上,運行在VMWare Fusion中的IE8運行在OS X上訪問通過apache/django/python運行的站點。但是,由於VMWare Windows XP機器中的Chrome和Firefox正常運行,似乎直接指向IE8作爲罪魁禍首。
使用指定mimetype =「text/javascript」的django.http.HttpResponse對象發送響應 - 也許我應該考慮修改它還是添加其他標頭? – sansjoe 2010-10-18 14:34:59
附錄:剛試過mimetype作爲'application/json',IE8的行爲沒有任何變化。 – sansjoe 2010-10-18 14:40:31