Python Internet Explorer 8中原型Ajax.Request提示文件下载时出现问题

Python Internet Explorer 8中原型Ajax.Request提示文件下载时出现问题,python,ajax,django,internet-explorer-8,prototypejs,Python,Ajax,Django,Internet Explorer 8,Prototypejs,拥有一组启用原型的ajax代码,该代码在除IE之外的所有浏览器中都能工作。在IE8中,JSON(否则会返回到ajax.Request中指定的onSuccess处理程序函数)会被抛出到一个文件下载流中,该文件下载流会弹出并提示下载位置 askForm = $('askForm'); var askUrl = '.'; var askParameters = askForm.serialize(true); askForm.disable(); var askAjax = new Ajax.Req

拥有一组启用原型的ajax代码,该代码在除IE之外的所有浏览器中都能工作。在IE8中,JSON(否则会返回到ajax.Request中指定的onSuccess处理程序函数)会被抛出到一个文件下载流中,该文件下载流会弹出并提示下载位置

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通过apache/django/python在OS X上访问一个运行的站点。然而,由于VMWare Windows XP机器中的Chrome和Firefox功能正常,似乎直接将IE8视为罪魁祸首

将JSON发送到浏览器的服务器端文件是否发送了正确的头文件?如果它不将自己标识为JSON,浏览器可能会认为它是一个要下载的文件。这里有一个疯狂的问题,但事实证明,有一个javascript错误阻止了脚本的执行,并且标准表单提交是通过浏览器发生的,因此返回AJAX代码作为文件下载提示。表单的设计方式是,禁用javascript的浏览器仍然能够在没有ajax的情况下使用名为“js”的隐藏输入字段来使用表单。当通过AJAX提交时,javascript将清空此字段的值,以让服务器知道响应应该是JSON,而不是整页刷新。javascript中屏蔽js字段值的部分正常处理,但随后脚本出错,因此event.stop()javascript从未执行。导致表单被处理为标准的提交按钮,单击,通过浏览器发布请求

请注意,在上面的代码中

askForm = $('askForm');
这显然应该是

var askForm = $('askForm');

多亏了允许这种语法的浏览器,结果它让我陷入了IE8的白鹅追逐。始终在学习。

响应是使用django.http.HttpResponse对象发送的,该对象指定mimetype=“text/javascript”-也许我应该考虑修改该标题或添加其他标题?附录:只是尝试了mimetype作为“application/json”,没有改变IE8的行为。