Пометить отправку формы как ajax, добавив параметры в POST после отправки - PullRequest
0 голосов
/ 18 февраля 2012

Я попробовал решение в этом посте - , используя 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?, который я могу использовать вместочто я пытался сделать, но я все еще вижу, что это было бы полезно, поэтому я оставлю вопрос открытым.

1 Ответ

1 голос
/ 18 февраля 2012

Я не вижу, чтобы вы установили url в вашем вызове $ .ajax, в противном случае все выглядит нормально.

Это работает, как и ожидалось, см. JsFiddle:

Если вы измените строку, которая гласит:

json: '{"my": "cat"}'

к чему-то другому, например:

jsonXXX: '{"my": "cat"}'

, вы увидите, что один из ajaxSetup наверху, то есть:

json: '{"hello": "world"}'

, подобран, как и ожидалось.

Попробуйте этот пример локально, и если он работает, сначала преобразуйте этот рабочий пример в CoffeeScript, а затем приступайте к построению поверх него.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...