Рисунок Я бы добавил свое текущее понимание (через несколько часов ..)
- ProcessData = true: преобразовать пары значений имени объекта в кодировку URL или объекты массива в имяпары значений или взять строку как литерал.
- ProcessData = false: взять строку как литерал или вызвать метод ToString () объекта.
ПоверхProcessData = true, установив «традиционный» флаг, он может отправить его, используя рекурсивное кодирование, которое захватывает сложные структуры, или список пар плоских значений имени.
Таким образом, в отношении OP он работал без указанияprocessData, поскольку по умолчанию установлено значение true.Таким образом, он преобразовал пары имя-значение в объекте в URLE-кодированную форму.Когда вы добавляете строку обратно, она вызывает метод toString () вашего объекта.Так как у вас нет строки в кодировке URL, возвращаемой методом toString () (у вас ее нет), вы получите строку, например «[object Object]».Возможно, jQuery не может отправлять строки, которые не закодированы в URL-адресе, или не использует унаследованный метод toString ().
Два представленных решения преобразуют объект в строку JSON, и, следовательно, нет обработки, и, следовательно,processData ничего не делает.Параметр contentType помогает серверу понять, что отправляется.
Кроме того, один человек прокомментировал, что обработка добавляет закодированные свойства к URL-адресу.Не совсем: отправляет эти данные наиболее подходящим способом;GET означает добавленный к URL-адресу, а POST означает HTTP-тело в кодировке Urlen.