У меня есть веб-приложение, написанное на rails и jQuery, которое дает мне загадочную проблему с AJAX в Firefox.
Когда я выполняю определенный AJAX-запрос к моему локальному rails-серверу, jQuery вызывает обработчик события ошибки запроса без какой-либо интересной информации об ошибке, при выводе аргументов в консоль выдается только:
[Object { readyState=0, status=0, statusText="error"}, "error", ""]
Интересно, что сервер действительно получает запрос и утверждает, что он отвечает успешно; конечно, он выполняет работу на стороне сервера, которую должен был. По какой-то причине ни HTTPScoop, ни Wireshark не смогли по-моему полюбить анализ трафика на интерфейсе обратной связи. Firebug не сообщает никакой информации об ответе, просто сердитый красный X.
Еще интереснее, я получаю другое поведение на героку. В этом случае запрос AJAX по-прежнему завершается сбоем без предоставления интересной информации об ошибке, firebug сообщает о сердитом красном X, но сервер даже не получает запрос.
Кажется, что-то с Firefox. Curl может успешно выполнить POST-запрос, и Safari и Chrome отлично запускают приложение.
Проблема не системная. У меня есть несколько других объектов модели, которые используют тот же шаблон для сохранения себя на сервере, и они отлично работают. Действительно, если модель другого типа: линия, нарисованная от руки вместо сегментов, она работает отлично.
Для чего бы то ни было, POST-данные неудавшегося запроса могут выглядеть примерно так:
wall[kind] wall
wall[vertex_values][0][x] -60
wall[vertex_values][0][y] -3
wall[vertex_values][1][x] -55
wall[vertex_values][1][y] 2
wall[vertex_values][2][x] -55
wall[vertex_values][2][y] -1
wall[vertex_values][3][x] -55
wall[vertex_values][3][y] -4
wall%5Bkind%5D=wall&wall%5Bvertex_values%5D%5B0%5D%5Bx%5D=-60&wall%5Bvertex_values%5D%5B0%5D%5By%5D=-3&wall%5Bvertex_values%5D%5B1%5D%5Bx%5D=-55&wall%5Bvertex_values%5D%5B1%5D%5By%5D=2&wall%5Bvertex_values%5D%5B2%5D%5Bx%5D=-55&wall%5Bvertex_values%5D%5B2%5D%5By%5D=-1&wall%5Bvertex_values%5D%5B3%5D%5Bx%5D=-55&wall%5Bvertex_values%5D%5B3%5D%5By%5D=-4
Хотя успешный запрос выглядит так:
wall[kind] drawing
wall[vertex_values][0][x] -50.0469798657718
wall[vertex_values][0][y] 1.0961968680089402
wall[vertex_values][1][x] -49.77852348993288
wall[vertex_values][1][y] 0.9172259507829903
wall[vertex_values][2][x] -49.51006711409395
wall[vertex_values][2][y] 0.7382550335570386
wall[vertex_values][3][x] -49.331096196868
wall[vertex_values][3][y] 0.6487695749440636
wall[vertex_values][4][x] -49.107382550335565
wall[vertex_values][4][y] 0.604026845637577
wall[vertex_values][5][x] -48.92841163310961
wall[vertex_values][5][y] 0.5592841163310887
wall[vertex_values][6][x] -48.838926174496635
wall[vertex_values][6][y] 0.5592841163310887
wall[vertex_values][7][x] -48.749440715883665
wall[vertex_values][7][y] 0.5592841163310887
wall%5Bkind%5D=drawing&wall%5Bvertex_values%5D%5B0%5D%5Bx%5D=-50.0469798657718&wall%5Bvertex_values%5D%5B0%5D%5By%5D=1.0961968680089402&wall%5Bvertex_values%5D%5B1%5D%5Bx%5D=-49.77852348993288&wall%5Bvertex_values%5D%5B1%5D%5By%5D=0.9172259507829903&wall%5Bvertex_values%5D%5B2%5D%5Bx%5D=-49.51006711409395&wall%5Bvertex_values%5D%5B2%5D%5By%5D=0.7382550335570386&wall%5Bvertex_values%5D%5B3%5D%5Bx%5D=-49.331096196868&wall%5Bvertex_values%5D%5B3%5D%5By%5D=0.6487695749440636&wall%5Bvertex_values%5D%5B4%5D%5Bx%5D=-49.107382550335565&wall%5Bvertex_values%5D%5B4%5D%5By%5D=0.604026845637577&wall%5Bvertex_values%5D%5B5%5D%5Bx%5D=-48.92841163310961&wall%5Bvertex_values%5D%5B5%5D%5By%5D=0.5592841163310887&wall%5Bvertex_values%5D%5B6%5D%5Bx%5D=-48.838926174496635&wall%5Bvertex_values%5D%5B6%5D%5By%5D=0.5592841163310887&wall%5Bvertex_values%5D%5B7%5D%5Bx%5D=-48.749440715883665&wall%5Bvertex_values%5D%5B7%5D%5By%5D=0.5592841163310887
Я полностью сбит с толку. Я попал в самую странную ошибку в Firefox, или я делаю что-то настолько глупое, что это непостижимо для меня?