2010-08-19 3 views
12

Допустим, у меня есть вызов Ajax с JQuery, как это:с помощью Ajax beforeSend для изменения данных

$.ajax({ 
    url: myUrl, 
    data: myData, 
    type:'post' 
}); 

Я хотел бы иметь возможность добавить к MyData с помощью

$.ajaxSetup({ 
    beforeSend: function(call){...} 
}); 

Результат должен что все вызовы ajax (как post, так и get) изменяются, поэтому, если я получаю дополнительный параметр IsAjax = true

+0

Вы не можете изменить переменную перед тем, как поместить ее в вызов ajax? – Neal

+0

Вы могли бы, но это было бы не очень СУХОЙ. – Mario

ответ

11

This blog post объясняет, как вы можете использовать $.ajaxSetup, чтобы добавить данные. Он аккумулирует как $.extend Просто сделайте это:

$.ajaxSetup({ 
    data:{ 
    isAjax:true 
    } 
}); 
22
$.ajaxSetup({ 
    beforeSend: function(jqXHR, settings) { 
    settings.data = $.extend(settings.data, {isAjax: true}); 
    return true; 
    } 
}); 
+0

1) вам не нужно возвращать true (просто не верните false) 2) Я думаю, что на данный момент данные уже стали параметризованной строкой, поэтому вам нужно будет добавить app is is ajax = true (начиная с это уже не объект, который может быть расширен). – Dtipson

+0

1) Хорошая привычка делать возврат в случае, если это влияет на функциональность. 2) Я думаю, что это зависит от того, какой формат данных вы передаете ** Функция ajax ** – verybadbug

+0

1) Хорошо, но в случае этой конкретной функции она не влияет на функциональность, поэтому она по-прежнему не нужна. Не все функции должны возвращать что-либо (поэтому более строгие языки определяют определенные функции как «void»). 2) Я не думаю, что это важно, какой формат был (получить или отправить, данные obj/string). данные, переданные в качестве нативного объекта, все еще регистрируются как параметризованная строка внутри этой функции. – Dtipson

2

Вы можете только реально использовать beforeSend в $ .ajax();

$.ajax({ 
    beforeSend: function(xhr){ 
    this.data += '&' + $.param({ 
     param: 'test' 
    }); 
    } 
}); 
Смежные вопросы