Радиокнопки AJAX с jQuery

Мне нужна помощь, чтобы отправить RSVP с такими переключателями:

Attending: <input type="radio" />
Maybe Attending: <input type="radio" />
Not Attending: <input type="radio" />

Всякий раз, когда кто-то отвечает на событие, он должен соотносить ввод с выбранным (поэтому можно выбрать только один переключатель), поэтому, когда выбран один вариант, он должен выполнить запрос AJAX с функцией $.ajax.

Я сделал это:

Attending: <input type="radio" onclick="rsvpEvent(3, 1);" />
Maybe Attending: <input type="radio" onclick="rsvpEvent(2, 1);" />
Not Attending: <input type="radio" onclick="rsvpEvent(1, 1);" />

С jQuery:

function rsvpEvent(rsvp, id)
{   
    $.ajax({
       type: "GET",
       url: "http://localhost:8888/update/test.php",
       data: "rsvp=" + rsvp + "id=" + id,
       success: function()
       {
         alert('rsvp: ' + rsvp + ' id: ' + id);
       },
       error: function()
       {
         alert('rsvp: ' + rsvp + ' id: ' + id);
       }
     });
}

Это вообще не работает... в чем проблема?


person MacMac    schedule 21.09.2010    source источник


Ответы (3)


Есть пара вещей, которые я бы изменил

  • Я бы сделал настоящую форму, а не просто переключатели, чтобы кто-то без включенного Javascript все еще мог посещать ваши замечательные вечеринки.
  • Сделайте все переключатели одинаковыми name='whatever', чтобы вы могли выбирать только по одному за раз
  • Если вы используете форму, вы можете использовать serialize() из jQuery, чтобы исправить ошибку с вашими данными (в настоящее время вы d будет отправлять rsvp=3id=1, чего, я сомневаюсь, ожидает ваша функция).
person Robert    schedule 21.09.2010
comment
so that someone without Javascript enabled can still attend your wonderful parties. - лучшая цитата ;) - person MacMac; 22.09.2010

Ваша конкретная проблема - это значение URL, оно должно быть только:

url: "update/test.php",

Запросы Ajax к сторонним веб-сайтам обычно невозможны из-за ограничений безопасности, поэтому вы не можете использовать http:// в значении URL.

В данных не забудьте & перед идентификатором

+ “&id=” + id
person David Oliveira    schedule 22.09.2010

Во-первых, я думаю, что это должно быть событие публикации, а не получение, и данные, которые вы отправляете, представляют собой одну строку, когда код позади метода будет ожидать два параметра.

       function GetDate() {
            $.ajax({
                type: "POST",
                url: "default.aspx/GetDate",
                data: "{myParam:'" + document.getElementById("txtParam").value + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    $.each(msg, function(i, item) {
                        $("#dialog").fadeOut("fast", function() {
                            $("#dialog").html(item);
                            $("#dialog").fadeIn(300);
                        });

                    });
                }
            });
        }
person griegs    schedule 21.09.2010
comment
Я знаю, что мой образец предназначен для .Net, но остальное актуально - person griegs; 22.09.2010