2012-01-05 72 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的默认浏览器(无论浏览器是什么)