Подтвердить что ты не робот

Настроить iframe с помощью HTML-сообщения с помощью jQuery

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

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

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

Любые идеи?

4b9b3361

Ответ 1

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

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

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

$("#formid").submit();

Ответ 2

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

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

$.post('myurl', function(data) {
    $('#myframe').html(data);
}, 'html');

Ответ 3

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

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

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

Ответ 4

вот как я это сделал в 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();

Ответ 5

Я знаю, что этот вопрос старый, но вот как я это сделал на ASP.Net(С#), используя 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 несколько раз.

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

Ответ 6

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

  • Я создал переменные для захвата имени, целевого объекта asp.net, действие, метод и т.д.

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

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

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

Это, похоже, решило мою потребность в аналогичном решении.

Ответ 7

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