2011-08-14 48 views
1

通過jQuery即興包含表單並將表單提交到PHP頁面的正確方法是什麼?如何使用即興對話框包含和提交表單

目前,我正在做:

<script> 
    var someform = '<form method="post" action="my.php" id="myform"> 
    Enter your name<br /> 
    <input name="name" /><br /> 
    What's your favorite color?<br /> 
    <select name="color"> 
    <option>red></option> 
    <option>blue</option> 
    </select><br /> 
    Tell us more about that<br /> 
    <textarea name="comments"></textarea> 
    <input type="hidden" name="submit" /> 
    </form>'; 

    function callback_form(v,m,f){ 

    if(v == 1) 
    { 
    $('#myform').submit(); 
     location.reload(); 
    } 
    else 
    { 
     $.prompt.close() 
    } 
    } 
</script> 

在HTML,當我把它的形式顯示和刷新頁面,但不提交。

<a href="#" onclick="$.prompt(someform,{ callback: callback_form, buttons: { Cancel: 0, Add: 1 },focus: 1 });">Launch Form</a> 

我覺得有一定有一些容易犯的錯誤,我做的,但我不能找到真正包括使用即興形式標籤別人的任何實例。我希望有人能指出我正確的方向。任何人都可以幫助我提示用戶輸入並實際提交表單使用即興的最佳方法嗎?

回答

1

也就是說,您在提交時正在重新加載頁面。如果您提交表單,那麼您的頁面將轉到'my.php',因此您不需要'location.reload()'。

+0

's/do not need/should not have /' –

+0

如果我刪除重載行,該頁面看起來根本不起作用。該對話框關閉,但該頁面不像我點擊一個提交按鈕。我想知道如果我需要一個未顯示的按鈕,我使用jquery物理「點擊」? – user882134

+0

更新:如果我在實際表單中放入並單擊按鈕,它會提交正常。所以$('#myform')。submit();行動的行爲與實際點擊提交按鈕的行爲不同,當我認爲行爲會相同時。 – user882134

1

你應該能夠通過AJAX提交表單是這樣的:

$.post('my.php',f,function(data,status,xhr){ 
    //do something here 
}); 
+0

好的,你可以在上面的表單上下文中重新表述嗎?對不起,我從未使用$ .post之前... – user882134

+0

@ user882134,這工作正常,雖然my.php不存在,但它是張貼正確的東西:http://jsfiddle.net/vPuFe/ –

1

我想通了;謝謝您的幫助!

很顯然,我需要改變的回調提交

$.prompt(someform,{ callback: callback_form 

$.prompt(someform,{ submit: callback_form)。當我引用提交行爲而不是調用函數時,一切都按照它應該的那樣工作。