2012-01-05 70 views
1

嘗試在javascript調用中創建和提交表單。此代碼適用於Chrome,但不適用於Firefox和IE。我首先從Ajax調用(JSON)獲取值,然後將其作爲表單提交在jquery中提交表單 - 沒有在Firefox上工作

$('<form name="acsform" action="' + JSONobject.formacsurl +'" method="POST">' + 
    '<input type="hidden" name="PaReq" value="' +JSONobject.formpareq + '">' + 
    '<input type="hidden" name="TermUrl" value="'+ JSONobject.formtermUrl +'">' + 
    '<input type="hidden" name="MD" value="'+ JSONobject.formmd +'">' + 
    '</form>').submit(); 

任何想法?

只要添加...當我提醒某些文本在提交下面的一行時,我會在屏幕上看到提示框。這可能看起來像瀏覽器通過該代碼罰款(也許甚至提交表格),但我沒有被重定向到形式action地址。我也沒有得到任何JS錯誤。

再一次,它只能在Firefox和IE上失敗,Chrome會提交併重定向。

+0

我可能錯過了一些東西,但似乎有點長時間創建一個窗體提交已知的數據。更簡單地說,你可以像你做的那樣提取數據和[.post()](http://api.jquery.com/jQuery.post/)它沒有表單 – 2012-01-05 14:48:22

+1

爲什麼不使用'$ .post(JSONobject。 formacsurl,JSONobject)'? – dfsq 2012-01-05 14:49:22

+1

我認爲對於能夠使用Firefox或IE提交的表單,它實際上需要存在於正文中。所以,你總是可以將它附加到表單然後嘗試發佈它。但是@TomIngram說,你應該使用$ .post()。 – jValdron 2012-01-05 14:49:44

回答

3

試試這個代碼:

$(document).ready(function() 
{ 
    /* 
    * IF IS APPEND, USE A ID OR CLASS 
    */ 
    $('#X').append('<form id="myNewForm" class="myNewForm" method="post" action="">...</form>'); 
    $('#myNewForm').submit(); 

    //OR USE CLASS NAME 
    $('form.myNewForm').submit(); 

    /* 
    * IF NOT APPEND, USE A ID OR CLASS 
    */ 
    //USEA ID 
    $('#myForm').submit(); 

    //USE A CLASS NAME 
    $('form.my-form').submit(); 

    //USE A ELEMENT(ALL) 
    $('form').submit(); 

}); 

再見!

+1

工作!謝謝 – 2012-01-05 15:05:09

+0

沒問題,這是stackoverflow! ;) – 2012-01-05 15:14:45

0

坦率地說,我不確定在stackoverflow上的問題是否可以通過評論來碰撞,如果它允許通過回答你自己的問題來碰撞,但並不真的想創建一個新的並複製這個內容

我有此代碼的基礎上,從奧拉夫

$('#basic-modal-content').append('<form id="acsform" name="acsform" action="' + JSONobject.formacsurl +'" method="POST">' + 
    '<input type="hidden" name="PaReq" value="' +JSONobject.formpareq + '">' + 
    '<input type="hidden" name="TermUrl" value="'+ JSONobject.formtermUrl +'">' + 
    '<input type="hidden" name="MD" value="'+ JSONobject.formmd +'">' + 
    '</form>'); 
    $('#acsform').submit(); 

解決這個工作對IE外,Firefox,Opera和Chrome的所有罰款。但今天,我們從一位客戶那裏得到了一份報告,認爲這個過程並不適用於他的ipad。我不幸無法得到他在ipad上使用的是什麼瀏覽器(並且我沒有自己的ipad來檢查),但似乎這段代碼無法正常工作。日誌中的最後一項操作是創建JSON對象的ajax操作,並且在收到該JSON後觸發上述js。那是我的猜測。 你知道什麼從頭頂上關於這種形式提交是一個問題,在iPad的默認瀏覽器(無論瀏覽器是什麼)