2009-06-16 20 views
27

投稿を行うためにjQueryまたはJavaScriptを使用している場合、どうすれば現在のページではなくiframeをターゲットにすることができますか? jQueryのポストのフォーマットであるjQueryでHTMLポストを使用してiframeをターゲットにする

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

<form>タグでありのようなターゲットを指定する任意の場所に存在しているかのように、それはいないようです。

アイデア?

答えて

5

多分あなたはAJAX要求のポイントを見逃しています - なぜあなたは非同期要求の "ターゲット"を指定しようとしていますか? AJAXの要点は、サーバーからのリクエストがJavascriptに戻され、ページのリロードやHTMLの送信先がないということです。

あなたはIFRAMEへの要求の結果をロードしたい場合は、あなたが行う可能性があります:あなたはAJAXのポイントを逃している

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

。私が望むのは、ユーザーが送信ボタンをクリックすることなく、外部からiframeに投稿を送信することだけです。 srcを使用してiframeに渡すことはできません。なぜなら、必要なクエリーストリングパラメータではないからです。

タグは私が欲しいものを正確に行うことを可能にしますが、私は.net上にありますので、すべてがフォームタグ内に含まれていて、ターゲット属性で自分用に新しいフォームタグを作成することはできません。何らかの理由で、あなたが提供したコードを使用しても何も呼び出されません。私は#( "#myframe")を置き換えようとしました.html(data);アラート( "成功");運がない。 – Matt

-1

。 iframeに何かを投稿したいのであれば、単純なフォームで行うことができます。これは、JavaScriptまたは通常の方法で送信します:送信ボタン。

30

あなたは通常のフォームを経由してこれを行うことができます。

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

あなたは、フォームを提出するようにjQueryを使用することができます。

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

フォームでこれを行うことはできません。私はネット上にあり、フォーム内にフォームを持つことはできません。 – Matt

+4

メインフォームを使用できます。 jqueryを使ってアクションやターゲットなどの値を一時的に変更した後、リストアしてください。 – Josh

+0

ASP.NET MVCでは複数のフォームを使用できます。また、jQueryを使って動的にフォームをレンダリングして、フォームASP.NETを送信しても、それがチョークしないと思います。 –

4

あなたは何-フォーム許されない-内-Aを解決することができますフォームを動的に作成し、それを本文に追加することによって問題を解決します。ページ上の他のすべてを包含し、メインフォームの外であなたはiframe更新フォームを作成し

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

:だから、このような何かをしたいです。その後、Joshが勧めた通りに電話してください:$('#myspecialform').submit();

0

ここでは、AJAX/jQueryを使用してフォームを使用してリモートページにデータを送信する必要があるときに、asp.netページのフォーム内にフォームがあるという問題について取り上げました。

  1. 私は 形態からこれらの変数を、その情報を保持し、フォーム自体を変更asp.netフォーム名、ターゲット、 アクション、方法、等

  2. を捕捉するための変数を作成しましたjQueryを使って 私がそれをするのに必要なことをしてください。

  3. 私はフォームをAJAX経由で投稿しました。別の ページが情報を取得できるように、別のページに動的に投稿するフォームが必要だったためです。

  4. 最後に、asp.netフォームを のように変更し、残りのページが正しく機能するようにしました。

これは、同様の解決策の必要性を解決したようです。

3

私はこの質問が古いことを知っていますが、ここで私は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から削除するので、iFrameに複数回投稿するとフォームの要素でDOMを埋めることはありません。

あなたが作ることができるわずかな変更は、存在しない場合はフォーム要素を作成し、既に存在する場合はIDで参照して再利用することです。ここ

4

は、私は単純なHTMLとJavaScriptでそれをやった方法です:私は本当にアヤックス気にしない

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(); 
+0

'target'属性を使用しない場合、フォームはiframeに直接入ることができます:$( 'iframe#list_frame')。 FFとChromeで私のために働いた –

関連する問題