Экономьте время и используйте jQuery . У него есть абстракция для ajax, которая работает во всех браузерах, а не только в Internet Explorer и, возможно, в FF. ;-) Я предполагаю, что код там старый и долго не обновлялся.
Простой вызов ajax в jQuery выглядит следующим образом:
$.post(
'/the/url/to/post/to',
{ some: data },
function(data) { alert(data); }
);
Также помогает, если вы понимаете основы HTTP - например, методы запроса (PUT
, POST
, GET
, DELETE
, HEAD
) и так далее. Вставленная вами ошибка означает, что заголовок Content-Length
отсутствует в вашем запросе, и большинство серверов (если не все) ожидают его отправки при вводе PUT
или POST
, поскольку предполагается, что они "изменяют данные" ( например, создать, обновить).
Может быть, IE добавляет заголовок для вас, но Firefox, очевидно, этого не делает.
JQuery позаботится обо всем этом. ;)