Я попробовал решение в этом посте - , используя ajax beforeSend для изменения данных - но переданные параметры не включают ключ isAjax.
Данное решение:
$.ajaxSetup({
data:{
isAjax:true
}
});
Это мой код:
$.fn.related_table = (table,focus)->
$(this).submit ->
$.ajaxSetup data:
isAjax: true
fs = $(this).serializeArray()
row = build_output fs
$("#{table} > tbody:last").append(row)
$(table).toggle(true)
$.ajax(
data: fs
type: "POST"
cache: false
dataType: "json"
success : (res, status, xhr) => [
$("#{table} tr.pending").addClass("success"),
anim_success("#{table} > tbody > tr.pending > td.saved:last-of-type"),
$(this)[0].reset() ]
error : (xhr, status, err) => [
$("#{table} tr:last-of-type").addClass("error"),
anim_error("#{table} > tbody > tr.pending > td.saved:last-of-type") ]
complete : (xhr, status) => [
$("#{table} tr.pending").removeClass("pending"),
$("#spinning_wheel").hide(),
$("*[autofocus]:first").focus()]
)
false
Вы можете видеть, что я добавил ajaxSetup в обработчик отправки, чтобы попытаться убедиться, что это не проблема контекста, но я попробовал этов другом месте тоже.Функция прекрасно работает без модификации (и даже с ней) в том смысле, что она передает данные, просто она не добавляет и не отправляет дополнительный параметр.
Я не очень знаком с javascript / coffeescript /jQuery, поэтому я был бы очень признателен за понимание того, как этого добиться.
Версия JQuery - 1.8.16.
Я пробовал несколько разных способов заставить это работать, но не смог.Я установил репозиторий на github с простым сайтом, чтобы проверить это, если кто-то захочет его использовать https://github.com/yb66/Stackoverflow-question-9337273.
К счастью, я обнаружил, что у Синатры есть вспомогательный метод request.xhr?
, который я могу использовать вместочто я пытался сделать, но я все еще вижу, что это было бы полезно, поэтому я оставлю вопрос открытым.