有一组支持原型的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