2011-02-15 41 views
2

我需要找到一种方法来编写对文件的ajax响应。答案是XML字符串,这对我来说不算什么。如何在Firefox中保存ajax响应

我想要做的是点击我网页上的某些内容,并保存返回到文件的XML。

但因为我知道,JavaScript不能单独访问本地文件,也可以只发送的数据到另一台服务器,其中PHP将照顾这。

现在我卡住的地方是JavaScript和拦截。我知道,其中一些可以在Firefox中使用greaseMonkey来完成。如果是这样,怎么样?谢谢!

编辑:一些解释。

  • 创建输出的脚本不是由我写的。
  • 是的,我可以看到Firebug中的数据,看到是一回事。我需要解释这些数据
  • 这里有很多要求。大约每2秒钟一次,所以手动复制它们不是一种选择。

尽管如此,帮助吗?

回答

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()将其发送到自己控制的服务器。

0

为什么你不能这样做?

保存对服务器端文件的AJAX响应,然后提供一个链接,以便下载。

0

Firebug也会帮忙,你可以用非常方便的方式查看每种格式的反应,最后复制/保存。

0

使用一个正常(非AJAX)请求和Content-Disposition: attachment; filename="foo.xml"头添加到响应。

0

如果您只是要保存XML,为什么要使用AJAX?只需将location.href设置为发送“Content-disposition:attachment”标头的PHP脚本的位置,并在响应主体中提供XML。 AJAX似乎完全是这个工作的错误工具。