2010-11-05 38 views
0

形式犯規在DOM存在,它的動態創建,然後再提交jQuery的提交immidiate形式掛的Mozilla和Chrome都

$('<form action="http://www.google.com/" method=POST></form>').submit(); 

這種簡單的線條使這兩種瀏覽器掛起(Mozilla的甚至給出了一個窗口終止腳本,錯誤'太多遞歸'),jQuery 1.4.2,未嘗試在IE

任何想法?

最初的想法是編寫一個簡單的jQuery插件,它接受地圖中的url和一串參數,創建一個表單並將其提交爲POST ..以非ajaxy方式(重要)並從該頁導航離開該頁面

回答

2

首先添加到DOM。

$(function() { 
    $('<div style="display: none;">' 
     + '<form action="http://www.google.com/search" method="get">' 
     + '<input type="hidden" name="q" value="jquery" />' 
     + '</form></div>') 
     .appendTo('body') 
     .submit(); 
}); 
+0

不需要將它附加到DOM。 – 2010-11-05 17:50:02

+0

@Darin - 嘗試了兩種方式。在添加到DOM時,似乎只能在FF中工作。 – tvanfosson 2010-11-05 17:57:16

+1

@tvanfosson,你完全正確。我已經在谷歌瀏覽器上測試過它,它工作,所以我錯誤地認爲這將是所有瀏覽器的情況。 +1爲您的答案。 – 2010-11-05 18:00:00

0

你應該確保提交其本身構造一個表格,並提交或遞歸可能會出現一個頁面。以下是在計算器上搜索的示例:

$(document.createElement('form')) 
    .attr('action', 'http://stackoverflow.com/search') 
    .attr('method', 'post') 
    .append(
     $(document.createElement('input')) 
      .attr('type', 'hidden') 
      .attr('name', 'q') 
      .val('jquery submit form') 
    ) 
.appendTo('body')  
.submit();