我需要找到一种方法来写一个文件的ajax响应。响应是XML字符串,这对我来说非常好。
我想做的是点击我网页中的内容,然后保存返回给文件的XML。
但是因为我知道,Javascript本身无法访问本地文件,所以也可以将数据发送到另一台服务器,PHP会处理这个问题。
现在我被困的地方是javascript和拦截。我知道,其中一些可以在Firefox中使用greaseMonkey来完成。如果是这样,怎么样?谢谢!
编辑:一些解释。
还是,帮忙?
答案 0 :(得分:1)
您应该提供更多详细信息,最好是指向目标网页的链接
该页面是使用jQuery?,其他一些库?还是自定义XMLHttpRequest()
调用?
无论如何,一个更简单的方法可能会起作用,先试试......
如果正在将AJAX数据写入页面,请将DOMSubtreeModified
事件侦听器附加到容器元素。类似的东西:
document.getElementById ("ContainerID").addEventListener ("DOMSubtreeModified", YourFunction, false);
function YourFunction () {
//--- Get the target node's inner HTML and send it to our server.
}
请注意DOMSubtreeModified
events work fine in FF and Chrome, the two main browsers for Greasemonkey。
如果数据不被写入页面,那么拦截AJAX的最佳方法取决于目标页面是否使用像jQuery这样的库。
拦截AJAX的一般方法可以在this SO question(和其他人)中看到。
正如您所说,一旦获得数据,要自动将其写入文件,请使用GM_xmlhttpRequest()
将其发送到您控制的服务器。
答案 1 :(得分:0)
为什么你不能这样做?
将AJAX响应保存到服务器端的文件,然后提供指向它的链接,以便可以下载。
答案 2 :(得分:0)
Firebug也会提供帮助,您可以非常方便地查看几种格式的每个响应,并最终复制/保存它。
答案 3 :(得分:0)
使用普通(非AJAX)请求并在响应中添加Content-Disposition: attachment; filename="foo.xml"
标头。
答案 4 :(得分:0)
如果您要保存XML,为什么要使用AJAX?只需将location.href设置为发送“Content-disposition:attachment”标头的PHP脚本的位置,并在响应正文中提供XML。 AJAX似乎完全是错误的工具。