2014-12-05 2 views
2

Я использую ajax для отправки формы с двумя кнопками. Затем я обнаруживаю, какая кнопка нажата, используя параметры [: commit] в контроллере. Я также использую функцию jQuery AjaxComplete для выполнения некоторых манипуляций на передней панели. Мой вопрос заключается в том, как получить доступ к значению моей кнопки фиксации в функции jquery Ajax Complete, чтобы я мог указать, какая кнопка была нажата, не проходя через контроллер?rails ajax определяет параметры формы

Например, я уже делаю что-то подобное, когда я проверяю URL-адрес, чтобы увидеть, какой запрос ajax был отправлен, а затем выполнил какое-то действие, теперь я хотел бы углубиться в глубь и посмотреть, какие параметры отправляются с AJAX запрос (код CoffeeScript)

$(document).ajaxComplete (event, xhr, settings) -> 
    if settings.url.indexOf('mode=2') > 0 
     $('#nav_tabs').show(); 
+0

может прикреплять любые данные, необходимые для объекта xhr, перед отправкой – charlietfl

ответ

0

Посмотрите на документацию для settings аргумента, переданного в ajaxComplete обработчика. В зависимости от вашей версии jQuery вы можете напрямую обращаться к POJO settings.data. Если вы не можете, вы можете получить именно то, что хотите, просто играя с settings.url.

Например, предположим, что вы выполняли GET до http://www.google.com с объектом data{ herp: "derp", karp: "larp"}. Эти данные будут добавлены к URL-адресу в качестве параметра запроса. Давайте будем с ним!

// load the URL of the request 
var u = new URL(settings.url); 
var params = u.search.replace("?", "").split("&").map(
    function(currVal) { 
     var parts = currVal.split("="); 
     var resp = {}; 
     resp[parts[0]] = parts[1]; 
     return resp; 
}); 
// params now contains an array of { key: value } mappings for the request params. 
// now, lets merge them! 
var merged_params = {}; 
for (var i : params) { 
    merged_params[i] = params[i]; 
} 
// now merged_params is a POJO with the original keys&values of the data sent to the server. 
Смежные вопросы