Ajax / JQuery / JSON Forms - PullRequest
       14

Ajax / JQuery / JSON Forms

1 голос
/ 30 июля 2009

У меня есть форма для публикации информации на внешнем сайте, но по какой-то причине я получаю сообщение об ошибке:

Ошибка: [Исключение ... »Доступ к ограниченный URI запрещен "код:" 1012 " nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI) "местоположение: "Строка jquery.core.1-3-2.min.js: 19"] Исходный файл: jquery.core.1-3-2.min.js Линия: 19

Вот код, который я использую для заполнения формы (или попытки сделать это):

<script type="text/javascript" language="javascript">
$(function() {

  $(".FormButtons").click(function() {

    var name        = $("input#contactDataFirstName").val();
    var lname       = $("input#contactLastName").val();
    var gender      = $("input#contactDataGender").val();
    var dobd        = $("input#contactDataDateOfBirthday").val();
    var dobm        = $("input#contactDataDateOfBirthmonth").val();
    var doby        = $("input#contactDataDateOfBirthyear").val();
    var mobile      = $("input#contactDataMobilePhoneNumber").val();
    var street      = $("input#contactDataStreetAddress").val();
    var suburb      = $("input#contactDataSuburbTownCity").val();
    var postcode    = $("input#contactDataPostcode").val();
    var country     = $("input#contactDataCountry").val();
    var state       = $("input#contactDataCountrySubdivisionIDNew").val();
    var password    = $("input#contactDataPassword").val();
    var email       = $("input#contactDataEmail").val();
    var remail      = $("input#contactDataReceiveEmail").val();
    var rmail       = $("input#contactDataReceiveMail").val();
    var rsms        = $("input#contactDataReceiveSMS").val();

    var dataString = 'contactDataFirstName='+ name + '&contactLastName=' + lname + '&contactDataGender=' + gender + '&contactDataDateOfBirthday=' + dobd + '&contactDataDateOfBirthmonth=' + dobm + '&contactDataDateOfBirthyear=' + doby + '&contactDataMobilePhoneNumber=' + mobile + '&contactDataStreetAddress=' + street + '&contactDataSuburbTownCity=' + suburb + '&contactDataPostcode=' + postcode + '&contactDataCountry=' + country + '&contactDataCountrySubdivisionIDNew=' + state + '&contactDataPassword=' + password + '&contactDataEmail=' + email + '&contactDataReceiveEmail=' + remail + '&contactDataReceiveMail=' + rmail + '&contactDataReceiveSMS=' + rsms;

    $.ajax({
      type: "POST",
      url: "path_to_url",
      //dataType: "jsonp", 
      data: dataString,
      success: function() {
        $('#contact_form').html("<div id=\"message\"></div>");
        $('#message').html("<h2>Contact Form Submitted!</h2>")
        .append("<p>We will be in touch soon.</p>")
        .hide()
        /*.fadeIn(1500, function() {
          $('#message').append("<img id='checkmark' src='images/check.png' />");
        });*/
      }
     });
    return false;
    });
});
</script>

Может ли кто-нибудь помочь мне опубликовать мои данные на внешнем веб-сайте:)

Ответы [ 4 ]

3 голосов
/ 30 июля 2009

Вы можете проверить этот сайт для решения.

3 голосов
/ 30 июля 2009

Из-за междоменных ограничений невозможно POST с AJAX в другой домен. Способ работы jsonp заключается в вставке тега <script> в DOM, чтобы он выполнял запрос GET.

3 голосов
/ 30 июля 2009

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

Лучше всего отправлять сообщения POST на локальную страницу, которая действует как прокси-сервер и выполняет «реальный» HTTP POST для внешнего сайта.

2 голосов
/ 30 июля 2009

Нет необходимости использовать переменную для каждого ввода в форме.

Вы можете использовать $ ("form"). Serialize () для публикации всех полей ввода.

var str = $("form").serialize();

см. Здесь Форма запроса Сериализация

...