2015-12-11 2 views
3

Я использую $ .ajax для отправки формы, я хочу добавить пару ключ-значение в представление, которое не является частью ввода формы, и оно является общим для всех моих формы. Итак, я планировал переместить общую часть в ajaxsetup. Я хочу, чтобы получить их в действии, как два параметра, как ModelData, TokenKey Мой HTML кодПоследовательная информация с дополнительным параметром через ajaxsetup

<form id="frm"> 
 
    @Html.TextBoxFor(m => m.Name) 
 
    <input type="button" value="Test" onclick="AjaxPost(); return false;" /> 
 
</form>

My Java Script

$(function() { 
 
     $.ajaxSetup({ data: { 'TokenId': 'TokenId Value'} }); 
 
    }); 
 

 
    function AjaxPost() { 
 
     var frm = $("#frm"); 
 
     $.ajax({ 
 
      url: '/Home/Index', 
 
      type: 'POST', 
 
      data: frm.serialize(), 
 
      success: function() { } 
 
     }); 
 
    }

Это не за работой! Если я удалил данные в функции AjaxPost, то TokenId отправляет, В противном случае его нет.

+0

В соответствии с документами он устанавливает значения по умолчанию для будущих запросов Ajax. Он не добавит новый 'key' в' frm.serialize() 'объект, я полагаю .. – Rayon

+0

Могу ли я узнать, почему вы не храните пару ключевых значений в скрытом поле, чтобы он также передавался аналогично другим полям формы ? – Shuvro

+0

Самый простой способ сделать это: добавить скрытое поле в вашу форму с именем TokenId и установить необходимое значение для этого –

ответ

3

Я думаю, что это было бы хорошим решением:

$.ajaxPrefilter(function(options, originalData, xhr){ 
    if (options.data) 
    options.data += "&TokenId=TokenValue"; 
}); 

это будет влиять на все вызовы Ajax. Проверьте код: DEMO

+0

в случае, если нет данных, $ .ajaxPrefilter (функция (опции, originalData, XHR) { если? (options.data) options.data + = "& TokenId = TokenValue"; else if (! options.data.length) options.data = "TokenId = TokenValue"; }); –

1

Когда вы используете функцию jQuery serialize(), она просто превращает вашу форму в строку в формате a = 1 & b = 2 & c = 3. Таким образом, вы можете применить эту функцию к двум формам и объединить результат с помощью & между ними и использовать результат в своем вызове ajax. Вам понадобятся некоторые проверки, чтобы ни одна строка не была пуста, когда вы выполняете конкатенацию.

0
$.post(url,{key:value,data:frm.serialize},function(){ 
//do somehting 
}) 

я обычно делаю это его простой и легкий, и вы можете добавить столько key:value пар, которые вы хотите ...

+0

является возможным через ajaxsetup – Avinash

0

Вы можете добавить скрытое поле в форму с именем TokenId и требуемое значение , Или вы можете изменить данные, как показано ниже.

data : fir.serialize()+"&TokenId=TokenId+Value"; 

Примечание: Вы должны закодировать данные, прежде чем добавить, как выше

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