2012-01-25 10 views
0

このメソッドは基本的に新しいウィンドウでURLが入りますe.resultパラメータ、ここでは新しいウィンドウではない新しいタブで同じウィンドウを開く。jQuery - 新しいタブフォームでのリンクを開く

 $("#formMain").attr("action", e.result); 
     $("#formMain").attr("method", "post");  
     $("#formMain").attr('target', '_blank'); 
     $("#formMain").submit(); 

任意の提案は非常に残念ながら

答えて

2

を理解されるであろう、あなたには、JavaScriptからこのプロパティを設定することはできません。新しいウィンドウでリンクを開くのか新しいタブで開くのかを設定するブラウザです。

+0

を、私はそれは残念だ確信していないが、あなたは全く正しいです。 –

1

一般的に言えば、複数の投稿(ユーザーが前進/後退、再開など)を引き起こす可能性があるため、ユーザーに表示されるページにフォームを送信することは賢明ではありません。すでにjQueryを使用しているので、代わりに$ .post()または$ .get()を使用してください。 (http://api.jquery.com/jQuery.post/およびhttp://api.jquery.com/jQuery.get/を参照)。 e.resultにあるスクリプトは、単にフォームの提出を処理し(おそらくDBに保存する)、結果を返します。その結果に基づいて別のページが表示されます。

だからあなたのコードは次のようになります:

$("#formMain").submit(function() { 
    return false; 
}); 

function submitForm(url) 
    $.post(url, $("#formMain").serialize(), function(result) { 
     window.open('resultPageURL&result='+encodeURIComponent(result), '_blank'); 
    }); 
} 

submitForm(e.result); 

明らかに結果のフォーマットはあなた次第です - あなたが望んでいた場合は、同じように簡単に、JSONオブジェクトまたは結果ページのURLを返すことができます使用:

try { 
    var obj = $.parseJSON(result); 
    window.open('resultPageURL&'+JSON.stringify(obj), '_blank'); 
} catch (e) { 
    alert('Not a valid JSON result'); 
} 

または

window.open(result, '_blank'); 
関連する問題