Может ли кто-нибудь объяснить основное различие между отправкой данных через традиционный HTTP <form>
и через AJAX с точки зрения кодирования данных?
На самом деле я сталкиваюсь с проблемой потери данных при отправке данных на сервер через AJAX. Все после
будет потеряно.
Если я отправлю следующий фрагмент данных на сервер через jQuery AJAX
<p>test 1</p>
<p> </p>
<p>test 2</p>
Я получу следующие усеченные данные на сервере
<p>test 1</p>
<p>
Но если я отправляю те же данные через обычную отправку формы HTTP POST, то все данные достигаются на сервере.
Чтобы проверить, как данные кодируются при обычной отправке формы Я изменил метод формы с POST
на GET
и обнаружил, что приведенные выше данные кодируются как (извлеченные из строки запроса)
<p>test+1<%2Fp>%0D%0A<p>%26nbsp%3B<%2Fp>%0D%0A<p>test+2<%2Fp>
Значит ли это, что форма HTTP выполняет эту кодировку автоматически?
И если нам нужно отправить эти данные на сервер через AJAX, то мы должны закодировать их с помощью некоторой функции кодирования, например encodeURIComponent()
?
Я использовал encodeURIComponent()
и нашел что все данные успешно получены на сервере, как при обычной отправке формы HTML.
Может кто-нибудь пролить свет на эту топи c с некоторыми подробностями?