2011-07-30 54 views
3

我有一個網頁,jQuery和兩個文本框後形式jQuery和在新窗口中打開

我有一個按鈕,下面的腳本

<input name="text1" type="text" id="text1" /> 
    <input name="text2" type="text" id="text2" /> 

<A class="floatRight button buttonAction3" href="#" name="save" id="save">Send</A> 

我想一個jQuery腳本加載send.php

上面點擊鏈接

和兩個文本框中的數據將被髮送作爲後

和send.php將在指定的寬度和高的新窗口中打開

實際上我不想使用$ .post處理數據。

我要的是與

window.open() 

打開了新的窗口,然後在後期數據窗口中打開一個PHP文件。

感謝

回答

1
$(document).ready(function() { 
    $("#save").click(function(e) { 
     e.preventDefault(); 
     $.post("send.php", { text1 : $("#text1").val(), text2 : $("#text2").val() }, 
       function(html) { 
        // open new window here 
       } 
    }); 
}); 

鑑於你的元素並不包裹的形式,上面應該足夠了。說明:

  • 將點擊處理程序綁定到保存按鈕。使用e.preventDefault()阻止鏈接的默認「操作」。
  • 使用jQuery的$.post高級ajax方法發佈文本輸入的兩個值。
  • send.php將獲得$ _POST陣列,它看起來像array("text1" => "thetext", "text2" => "thetext")
  • 成功的回調函數來$.post觸發一旦服務器發送它的響應返回給客戶端。這就是你想要打開新窗口的地方。

參考:

+0

首先這需要兩次點擊鏈接時,第二個會有什麼新窗口中加載代​​碼,因爲我用window.open(「page.php文件」,空 「高度= 500,寬度= 800,狀態=是,工具欄=沒有,菜單欄=沒有,位置=沒有,可調整大小=是」);但是哪裏會是post變量 – air

2

快速回答你的問題是使用一種形式,並添加一個目標=「_空白」屬性給它,這並沒有給儘管如此,你可以控制寬度和高度。

但是,我認爲你應該改變你處理這種情況的方式。這種方法會使它在屁股上擴大一個巨大的痛苦。利用s。 jQuery可以比整個頁面中的隨機輸入元素更容易處理表單。

<form id="search" method="post" action="send.php"> 
    <input type="hidden" name="id" value="25"> 
    <input type="text" name="email" placeholder="[email protected]"> 
    <input type="submit" value="Send"> 
</form> 

現在我們可以這樣做:

// Sweet, the form was submitted... 
    $('#search').submit(function(e){ 

    // Let's get the form with jQuery... 
    $form = $(this); 

    // Now you can do things like... 
    $.post($form.attr('action'), $form.serializeArray(), function(result) { 
     // "result" will inclue whatever the script returns... 
    }); 

    // If you really need to open up the new window the only way I can think of controlling the size is with a get request... 
    window.open($form.attr('action') + '?' + $form.serialize(), 'PopUp', 'width=100,height=100'); 

    // Stop the browsers default behavoir from kicking in! 
    e.preventDefault() 


});