Jquery установлен, так почему мой ajax не работает? - PullRequest
0 голосов
/ 27 марта 2020

Для объяснения этого необходим небольшой фон:

У меня есть старое приложение rails 2, которое имеет форму в модале. когда я отправляю эту форму, она должна обновить базу данных и закрыть модальный. сгенерированная форма выглядит так ..


> <form action="/assignments/doattendance/767107" id="modalForm_767107"
> method="post" onsubmit="jQuery('.modal-backdrop').fadeOut(200,
> function(){jQuery(this).remove();});; new
> Ajax.Updater('Assignment_767107', '/assignments/doattendance/767107',
> {asynchronous:true, evalScripts:true,
> parameters:Form.serialize(this)}); return false;">

Если вы посмотрите внимательно, вы увидите вызов прототипа Ajax в этой форме. Это генерируется вызовом rails remote_form_for в файле erb. Сейчас же. По "причинам" я не могу использовать remote_form_for на второй странице, отображающей эту форму, и мне нужно построить форму обычно вне рельсов, используя тег <form id="monthForm>. Но мне нужен этот прототип Ajax. У меня установлена ​​jQuery, и она работает на сайте. Итак ...

У меня есть прототип кода, который мне нужно преобразовать в jquery. Но я продолжаю сталкиваться с ошибкой ". ajax не является функцией" ...

Код прототипа:


> new Ajax.Updater('Assignment_767107',
> '/assignments/doattendance/767107', {asynchronous:true,
> evalScripts:true, parameters:Form.serialize(this)});

  1. КАК Я ПРЕВРАЩАЕМСЯ ВЫШЕ ПРОШЕЛУЮ КОДЕКС прототипа В JQUERY для моей формы?

Я читал похожий вопрос здесь ...

Что эквивалентно Ajax .updater в Jquery ?

... на эту тему в StackOverflow и построили ее на основе этого ответа ...

jQuery('#monthForm').submit(function(event){
                        event.preventDefault();

                        jQuery.ajax({
                            url: '/assignments/doattendance/'+myValue.id,
                            type: "post",
                            dataType: "html",
                            data: {"Form.serialize(this)" : "Assignment_"+myValue.id},
                            success: function(returnData){
                                jQuery("#Assignment_767107").html(returnData);
                            },
                            error: function(e){
                                alert(e);
                            }
                        })
                    })

Опять же, к ajax должна быть прикреплена форма это ...

<form id="monthForm">
...
</form>

НО ... Я ничего не получаю, что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 27 марта 2020

ajax - это метод самого jQuery объекта , а не его экземпляра.

Вам нужно jQuery.ajax(), а не jQuery('#monthForm').ajax().

0 голосов
/ 27 марта 2020

Вы хотите

$("#monthForm").on("submit",function(e) { 
  e.preventDefault(); // stop the actual submission
  const data = $(this)-serialize()+"&Assignment_"+myValue.id; // or similar
  $.ajax({
    url: '/assignments/doattendance/'+myValue.id,
    type: "post",
    dataType: "html",
    data: data ,
    success: function(returnData){
      $("Assignment_"+myValue.id).html(returnData);
    },
    error: function(e){
      alert(e);
    }
  })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...