Настройте таргетинг iframe на HTML-пост с помощью jQuery - PullRequest
27 голосов
/ 17 июня 2009

Если я использую jQuery или JavaScript для публикации, как я могу настроить таргетинг на iframe вместо текущей страницы?

jQuery.post( 
    url, 
    [data], 
    [callback], 
    [type] 
) 

Это формат поста jQuery, не похоже, что есть место для указания цели, как в <form> теге.

Есть идеи?

Ответы [ 7 ]

30 голосов
/ 17 июня 2009

Вы можете сделать это через обычную форму:

<form action="targetpage.php" method="post" target="iframename" id="formid">
   <input type="hidden" name="foo" value="bar" />
</form>

Затем вы можете использовать jQuery для отправки формы:

$("#formid").submit();
5 голосов
/ 17 июня 2009

Может быть, вам не хватает точки AJAX-запроса - почему вы пытаетесь указать «цель» асинхронного запроса? Это не имеет смысла, поскольку весь смысл AJAX заключается в том, что запрос от сервера отправляется обратно в Javascript, без перезагрузки страницы или назначения HTML.

Если вы хотите загрузить результат запроса в iframe, вы можете сделать:

$.post('myurl', function(data) {
    $('#myframe').html(data);
}, 'html');
4 голосов
/ 04 мая 2012

вот как я сделал это в JavaScript с простым HTML:

var form=$("<form/>").attr({
    method: "post",
    action: "iframe.php",
    target: "list_frame"
});
form.append($("<input/>").attr({name:"field1",value:0}));
form.append($("<input/>").attr({name:"field2",value:1}));
form.append($("<input/>").attr({name:"field3",value:2}));
form.append($("<input/>").attr({name:"field4",value:3}));
form.append($("<input/>").attr({name:"field5",value:4}));
$("body").append(form);
form.submit();
4 голосов
/ 20 мая 2011

Вы можете решить проблему отсутствия форм в форме, динамически создавая форму и добавляя ее в тело. Итак, вы бы сделали что-то вроде этого:

$().ready(function() {
    $('body').append('<form 
       action="url" 
       method="post" 
       target="iframename" 
       id="myspecialform">
         <input type="hidden" name="parameter" value="value" />
       </form>');
});

Это создает вашу форму обновления iframe вне основной формы, которая охватывает все остальное на странице. Тогда просто назови это так, как рекомендовал Джош: $('#myspecialform').submit();.

3 голосов
/ 29 февраля 2012

Я знаю, что этот вопрос старый, но вот как я это сделал на ASP.Net (C #) с использованием jQuery.

//Create the form in a jQuery object
$("<form action='/FormPostTo.aspx' method='post' target='nameofframe'></form>")
    //Get the value from the asp textbox with the ID txtBox1 and POST it as b1
    .append($("<input type='hidden' name='b1' />").attr('value',$('#<%= txtBox1.ClientID %>').val()))
    //Get the value from the asp textbox with the ID txtBox2 and POST it as b2
    .append($("<input type='hidden' name='b2' />").attr('value',$('#<%= txtBox2.ClientID %>').val()))
    //Add the form to the body tag
    .appendTo('body')
    //Submit the form which posts the variables into the iframe
    .submit()
    //Remove the form from the DOM (so subsequent requests won't keep expanding the DOM)
    .remove();

Просто короткое примечание: я сделал такие входные теги, а не их конкатенацию, на случай, если в значении текстового поля есть кавычка ('). Если вы объедините его, он испортит HTML и не сможет правильно проанализировать.

Кроме того, это удаляет форму из DOM после ее использования, поэтому вы не заполняете DOM элементами формы, если публикуете в iFrame несколько раз.

Одно небольшое изменение, которое вы могли бы сделать, - это создать элемент формы, если он не существует, а затем просто ссылаться на него по ID, если он уже существует, и использовать его повторно.

0 голосов
/ 15 декабря 2011

Вот что я сделал, чтобы обойти проблему наличия формы в форме на странице asp.net, когда мне нужно было отправить данные на удаленную страницу через форму, в идеале с использованием AJAX / jQuery.

  1. Я создал переменные для захвата имени формы asp.net, target, действие, метод и т. д.

  2. Я держал эту информацию из формы в эти переменные, а затем изменили саму форму, используя jQuery, чтобы сделать что мне нужно было сделать.

  3. Затем я отправил форму через AJAX (потому что мне нужна форма для динамического размещения на отдельной странице, так что другие страница может получить информацию).

  4. Наконец, я изменил форму asp.net обратно чтобы остальная часть страницы работала правильно.

Кажется, это решило мою потребность в подобном решении.

0 голосов
/ 17 июня 2009

Вы упускаете из виду AJAX. Если вы хотите опубликовать что-то в iframe, вы можете сделать это с помощью простой формы, опубликованной с помощью JavaScript или обычным способом: кнопка отправки.

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