Настроить iframe с помощью HTML-сообщения с помощью jQuery
Если я использую jQuery или JavaScript для публикации сообщения, как я могу сделать его нацеленным на iframe, а не на текущую страницу?
jQuery.post(
url,
[data],
[callback],
[type]
)
Это формат сообщения jQuery, не похоже, что где-либо можно указать цель, как в теге <form>
.
Любые идеи?
Ответы
Ответ 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 или обычным способом: кнопкой отправки.