gpt4 book ai didi

python - Prototype Ajax.Request 在 Internet Explorer 8 中提示文件下载的问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:07 24 4
gpt4 key购买 nike

拥有一组支持原型(prototype)的 ajax 代码,可以在 IE 以外的所有浏览器中运行。在 IE8 中,否则返回到 Ajax.Request 中指定的 onSuccess 处理函数的 JSON 被扔进文件下载流,该流弹出并提示下载位置。

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 上,IE8 在 VMWare Fusion 中运行,访问通过 OS X 上的 apache/django/python 运行的站点。但是,由于 VMWare Windows XP 机器中的 Chrome 和 Firefox 正常运行,似乎直接指向 IE8 作为罪魁祸首.

最佳答案

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

注意上面代码中...

askForm = $('askForm');

这显然应该是...

var askForm = $('askForm');

感谢允许这种语法的浏览器,但它让我陷入了 IE8 的疯狂追逐。一直在学习。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com