форма AJAX отправить не работает - PullRequest
0 голосов
/ 16 сентября 2011

Я использую jquery.form.js (версия: 2.84) и в приведенном ниже коде я вижу, что он застревает как раз перед $ ('imageform'). AjaxSubmit .. Если я удаляю protectDefault, форма отправляется какобычно и страница обновляется.При наличии protectDefault я вижу loader.gif, но на стороне сервера я не вижу никаких данных, а также предупреждение никогда не срабатывает.

google.maps.event.addDomListener($('photoimg'), 'change', function(e){
            e.preventDefault(); // <-- important
            $("preview").innerHTML = ("<img src=\"loader.gif\" alt=\"Uploading....\"></img>");
            $('imageform').ajaxSubmit({
                target: 'preview'
            });
            alert('after submit');
        });

Я также использую функцию, как показано нижеи поэтому я использую $ ('imageform'), а не $ ('# imageform') ...

function $(element) {
  return document.getElementById(element);
}

Ответы [ 2 ]

3 голосов
/ 16 сентября 2011

Нет, потому что вы перезаписали $ с помощью функции getElementById.

$('imageform').ajaxSubmit

выполнит ajaxSubmit для элемента DOM, где вам нужен объект jQuery. Вам нужно либо удалить $, либо использовать:

jQuery('#imageform').ajaxSubmit

$("#foo") не совпадает с document.getElementById("foo").

  • Функция jQuery возвращает объект jQuery, в котором присутствуют все функции jQuery, такие как .bind и .ajaxSubmit.

  • document.getElementById, с другой стороны, возвращает голый элемент DOM, который не имеет функций jQuery.

Объект jQuery похож на массив элементов DOM, поэтому:

$("#foo")[0] === document.getElementById("foo")
2 голосов
/ 16 сентября 2011

Ваша $ функция сглаживает значение этой же переменной для jQuery.Вы можете возиться с большим количеством совместимых вещей в jQuery, или пойти простым путем: переименовать вашу $ функцию во что-то другое или просто вызвать document.getElementById() прямо, так как ваша функция только избавляет вас от ввода этого вызова.Или, что еще лучше, используйте jQuery, чтобы позаботиться об этом вызове.

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