JQuery - $ (document) .getElementById ('id'). Submit (function {}); не определено не функция

0

Я искал или решал проблему, но ни один из найденных мной объявлений не является полезным.

Я пытаюсь сделать автоматическую форму, которая отправляется при загрузке страницы.

$(document).getElementById('ticketCount').submit(function(){
    $.ajax({
        method:$(this).attr('method'),
        url:$(this).attr('action'),
        data:$(this).serialize()
    })
    .done(function(data){
        $('#ticketCount').html(data);
    })
    .error(function(data){
        console.log(data);
    });
  });

Моя консоль сообщает мне, что: "Uncaught TypeError: undefined не является функцией". Я не думаю, что допустил ошибку (я знаю, что это зависит от регистра), и я уже использовал $ (document).ready(), $ (document).keyup(function {}) где-то еще в том же.js файл, поэтому я не думаю, что проблема возникает из $ (document)..

Я не могу сказать, где моя ошибка...

Спасибо за ваши ответы!

  • 6
    $(document). возвращает объект jQuery, у которого нет метода с именем getElementById
  • 0
    Где ты видел такой код ??? Однако вы можете использовать $(document.getElementById('ticketCount')) но зачем вам его использовать ?!
Показать ещё 2 комментария
Теги:
typeerror
undefined

4 ответа

2
Лучший ответ

.getElementById() → это синтаксис javascript для получения элемента DOM с определенным уникальным идентификатором.

в jQuery он отложен. У вас нет селектора для этого элемента DOM

Там много селекторов. Здесь вы nead ID SELECTOR. то есть: #id

поэтому вам нужно написать:

$('#ticketCount').submit(function(){
.............................

Если вы хотите отправить автоматически при загрузке страницы:

window.onload = function(){
  $('#ticketCount').trigger("submit");
};
  • 0
    Понял. Теперь, как я могу сделать это автоматически при загрузке страницы?
  • 1
    Отредактировано проверить это ou
Показать ещё 5 комментариев
2

У вас три ошибки.

Сначала: $(document) не является элементом DOM, поэтому .getElementById не определен. Вместо этого используйте селектор jQuery.

Второй: .submit требует, чтобы пользователь .submit кнопку отправки. Вместо этого можно использовать $(document).ready

+ Изменить

 $(document).getElementById('ticketCount').submit(function(){

в

$(document).ready(function(){

В-третьих: функция jQuery ajax не имеет свойства, называемого method. Вместо этого вместо этого он имеет type

+ Изменить

method:$(this).attr('method'),

в

type:$(this).attr('method'),
  • 0
    Можете рассказать ОП, почему не сработало, это поможет как ОП, так и будущим читателям.
  • 0
    Или для полноты: document.getElementById('ticketCount').submit() или document.querySelector('#ticketCount').submit() , используя HTMLFormElement.submit() ; jQuery здесь почти полностью не нужен.
Показать ещё 4 комментария
1

использовать setTimeout

setTimeout(function(){
var elem = document.getElementById('ticketCount');
var $elem = $(elem);
 $.ajax({
        type:$elem.attr('method'),
        url:$elem.attr('action'),
        data:$elem.serialize()
    })
    .done(function(data){
        $elem.html(data);
    })
    .error(function(data){
        console.log(data);
    });
},500);
  • 0
    Вы внесли ряд изменений в первоначальный вопрос ОП. Хотя я могу или не могу согласиться с вашим ответом, вы должны предложить более подробное описание того, что вы сделали и почему. Спасибо!
  • 0
    Спасибо! Это работает! (За исключением того, что я изменил document.getElementById ('ticketCount'); на $ ('# ticketCount'). Но это было то, что я искал! Спасибо!
Показать ещё 1 комментарий
0
$("#ticketCount").submit(function(){

изменить код

$(document).getElementById('ticketCount').submit(function(){

в

 $("#ticketCount").submit(function(){
  • 0
    Вы действительно потратили четыре минуты, чтобы опубликовать точно такой же ответ, как уже опубликованный?
  • 0
    Я не видел пост, когда я пишу извините за это

Ещё вопросы

Сообщество Overcoder
Наверх
Меню