Как сохранить ответ Ajax в Firefox - PullRequest
2 голосов
/ 15 февраля 2011

Мне нужно найти способ записи ответов ajax в файл. Ответы - это XML-строки, что более чем нормально для меня.

Что я хотел бы сделать, это щелкнуть что-нибудь на моей веб-странице и сохранить XML-файл, который возвращается в файл.

Но так как я знаю, что Javascript не может получить доступ к локальным файлам сам по себе, также возможно просто отправить данные на другой сервер, где PHP позаботится об этом.

Теперь место, где я застрял, - это JavaScript и перехват. Я знаю, что кое-что из этого можно сделать с помощью greaseMonkey в Firefox. Если так, то как? Спасибо!

Редактировать: некоторые объяснения.

  • Сценарий, который создает вывод, не написан мной.
  • Да, я мог видеть данные в Firebug, видеть это одно. Мне нужно интерпретировать данные
  • Здесь много запросов. Примерно 1 раз в 2 секунды, поэтому копировать их вручную не представляется возможным.

Тем не менее, помочь?

Ответы [ 5 ]

1 голос
/ 15 февраля 2011

Вы должны предоставить более подробную информацию, лучше всего ссылку на целевую страницу.
Использует ли страница 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 отлично работают в FF и Chrome, двух основных браузерах для Greasemonkey .

Если данные не записывается на страницу, тогда лучший способ перехватить AJAX зависит от того, использует ли целевая страница такую ​​библиотеку, как jQuery.

Общий способ перехвата AJAX можно увидеть в этот ТАК вопрос (и другие).

Как вы сказали, когда у вас есть данные, чтобы автоматически записать их в файл, используйте GM_xmlhttpRequest(), чтобы отправить их на сервер, которым вы управляете.

0 голосов
/ 15 февраля 2011

Если вы просто собираетесь сохранить XML, почему вы используете AJAX? Просто установите location.href в местоположение PHP-скрипта, который отправляет заголовок «Content-disposition: attachment» и дает XML в теле ответа. AJAX кажется совершенно не подходящим инструментом для работы.

0 голосов
/ 15 февраля 2011

Firebug также поможет, вы можете очень удобно просматривать каждый ответ в нескольких форматах и ​​в конечном итоге скопировать / сохранить его.

0 голосов
/ 15 февраля 2011

Используйте обычный (не AJAX) запрос и добавьте к ответу заголовок Content-Disposition: attachment; filename="foo.xml".

0 голосов
/ 15 февраля 2011

Почему ты не можешь сделать это так?

Сохраните ответ AJAX в файл на стороне сервера, а затем укажите ссылку на него, чтобы его можно было загрузить.

...