jQuery POST-запрос - отправка <form>внутри <iframe> - PullRequest
2 голосов
/ 13 октября 2009

Я создаю быстрый прототип в качестве подтверждения концепции для более крупного проекта. Мне нужно создать рабочий междоменный запрос POST, и у меня есть jQuery.

Поскольку я предполагаю (пожалуйста, исправьте меня, если я ошибаюсь), что $ .ajax () не будет работать, поскольку страница, выполняющая запрос POST, находится в другом домене, чем сервер, получающий запрос, я полагаю что лучшее решение - использовать JavaScript для создания

Как именно я это сделаю? (Пожалуйста, предоставьте примеры кода, если это возможно.)

Пока у меня есть это:

<button type="button" name="button">Make Cross-Domain POST Request</button>

<script>
  $('button').click(function() {
    $('body').append('<iframe id="post_frame" style="width: 0; height: 0; border: none;"></iframe>');
    setTimeout(function() {
      var frame_body = $('#post_frame').contents().find('body');
      frame_body.append('<form action="..." method="post"><input type="hidden" name="foo" value="bar" /><input type="submit" /></form>');
      // not sure what goes here (should submit the form in the iframed document once it has loaded)
    }, 1);
  });
</script>

Я знаю, что мне нужно использовать метод submit (), но я точно не знаю, как это выглядит, тем более что находится внутри

Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения / идеи, обнаружите какие-либо ошибки, могли бы порекомендовать лучший подход и т. Д. Заранее спасибо!

(Между прочим, я несколько дней назад провел поиск по переполнению стека и мог поклясться, что нашел какой-то код в связанном вопросе, который был бы полезен. Хотя сегодня я не могу его найти ...)

Ответы [ 3 ]

4 голосов
/ 14 октября 2009

p - это массив почтовых переменных, а to - ваше действие

   var issuePOST = function(to, p) {
        var myForm = document.createElement("form");
        myForm.method = "post";
        myForm.action = to;
        if (p) {
            for (var k in p) {
                var myInput = document.createElement("input");
                myInput.setAttribute("name", k);
                myInput.setAttribute("value", p[k]);
                myForm.appendChild(myInput);
            }
        }
        document.body.appendChild(myForm);
        myForm.submit();
        document.body.removeChild(myForm);
    };
0 голосов
/ 20 февраля 2013

До

$("#post_frame").contents().find('form').submit();

после добавления.

0 голосов
/ 21 октября 2009

Фрагмент JavaScript в этот вопрос будет публиковать междоменный домен из IFrame.

...