python - Internet Explorer 8 中提示文件下载时原型(prototype) Ajax.Request 出现问题

标签 python ajax django internet-explorer-8 prototypejs

拥有一组支持原型(prototype)的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*"]}

非常感谢这里的任何提示。这种情况发生在雪豹上,在 VMWare Fusion 中运行 IE8,访问 OS X 上通过 apache/django/python 运行的站点。但是,由于 VMWare Windows XP 计算机中的 Chrome 和 Firefox 运行正常,似乎直接指出 IE8 是罪魁祸首。

最佳答案

这个问题已经解决了。这里的问题很疯狂,但事实证明,存在一个 javascript 错误,导致脚本无法执行,并且标准表单提交是通过浏览器发生的,从而返回 AJAX 代码作为文件下载提示。该表单的设计方式使得禁用 javascript 的浏览器仍然能够使用名为“js”的隐藏输入字段而无需使用 ajax 的表单。通过 AJAX 提交时,JavaScript 会将此字段的值留空,让服务器知道响应应该是 JSON,而不是整个页面刷新。好吧,javascript 中清空 js 字段值的部分正常处理,但随后脚本出错,因此 event.stop() javascript 从未执行。导致表单被处理为标准的“提交”按钮单击、通过浏览器的 POST 请求。

上面代码中的注意事项...

askForm = $('askForm');

这显然应该是......

var askForm = $('askForm');

感谢允许此语法的浏览器,但结果却让我陷入了 IE8 的白费力气。永远学习。

关于python - Internet Explorer 8 中提示文件下载时原型(prototype) Ajax.Request 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3956287/

相关文章:

Python:查找 URL 并添加查询字符串对

django - 自动将所有模型字段添加到 django rest 序列化程序

python - 获取滚动 15 分钟的最大值

python - 如何在 python 中从一个 .py 文件运行多个 .py 文件

c# - 尝试使用 ajax/jquery 获取所选单选按钮的值

javascript - 使用 Ajax 或 Javascript 发送 XML 请求并从其他服务器接收 XML 响应

php - 使用 Jquery Ajax 传递 Json 数据然后显示响应

python - 如何打包 python 应用程序以使其可 pip 安装?

jquery - Ajax POST 到views.py 函数

Python:以数字方式查找积分的主值