2010-03-30 2 views
4

Способ jQuery $.ajaxSetup не относится к полю data в хэш-вариантах параметров, когда $.post или $.get называется?

Например, я мог бы иметь этот код:

$.ajaxSetup({ data: { persist: true } }); 

Затем отправить запрос POST, я бы назвал это:

$.post("/create/something", { name: "foo" }); 

Я ожидал, что фактические данные POST, чтобы выглядеть как это:

{ 
    persist: true, 
    name: "foo" 
} 

но единственные данные, посланные $.post является { name: "foo" }. Есть ли способ получить ожидаемое поведение? Я использую jQuery 1.4.1.

ответ

6

$.ajaxSetup() устанавливает значения по умолчанию для ваших запросов ajax. Любые параметры, заданные в методе запроса, будут переопределять эти значения по умолчанию, а не объединять их. Вы на самом деле перекрывая

{ persist: true } 

с

{ name: "foo" } 


Это уже не кажется, дело — a ticket on the jQuery tracker предполагает, что это было добавлено в обновлении версии и JQuery в настоящее время объединяет объекты вместо того, чтобы заменить по умолчанию (спасибо @Quincy).

+2

Несмотря на то, что этот вопрос составляет год, слияние работает. Просто прокомментируйте здесь, если кто-нибудь прочтет это. @see http://bugs.jquery.com/ticket/3387 – Quincy

+0

Я попытался объединить параметр post в ajaxSetup с данными, используя serializeArray, но это переопределяет параметр, определенный в axaxSetup http://stackoverflow.com/questions/ 21501224/определение глобального-Ajax-пост-пары-и-слияние-с разными-запросами –

0

Как documentation говорит, что опция data преобразуется в строку запроса и добавляется к URL-адресу для запросов GET.

+0

Я думаю, что документация здесь неясна. Для запроса POST «данные» должны быть преобразованы в строку запроса и отправлены через тело POST. –

Смежные вопросы