2011-05-19 43 views
0

嗨我有一個文本框....我想從那裏拿用戶輸入並傳遞給PHP,而不使用提交按鈕...我寧願一個正常的按鈕和onclick應該將數據傳遞到php從HTML格式傳遞值到PHP沒有提交表格

好的,這裏是我聽到的....你可以調用一個JS函數onclick,然後你可以從那裏提交表單....但我想在同一頁提交表格後......這就是爲什麼我不想提交的形式在第一個地方......但看起來像沒有其他方式......如果任何人知道提交方法,請幫助....

我很欣賞大家的努力

謝謝

+3

你的目標是?你想防止重新加載頁面嗎? – 2011-05-19 21:33:31

+0

是的,另一個目標是我不想使用AJAX – koool 2011-05-19 21:38:07

+1

java \ flash應用程序只剩下我能想到的 – 2011-05-19 21:39:47

回答

9

是的,它被稱爲AJAX。 :)

在jQuery中,爲簡潔:

// or $('#textbox_autopost').blur if you want to do it when the box loses focus 
$('#textbox_autopost').change(function(){ 
    $.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: {text:$(this).val()} 
    }); 
}); 

,如果你想通過按鈕來做到這一點單擊

<button id="inlinesubmit_button" type="button">submit</submit> 

$('#inlinesubmit_button').click(function(){ 
    $.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: {text:$('#textbox').val()} 
    }); 
}); 

你也可以做到這一點通過A HREF(或提交按鈕或其他東西古怪:

<!-- backup if JS not available --> 
<a href="handler.php" id="inline_submit_a">add comment</a> 

$('#inline_submit_a').click(function(evt){ 
    $.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: {text:$('#textbox').val()} 
    }); 
    evt.preventDefault(); 
    return false; 
}); 

如果你想在做進入:

$('#textbox_autopost_onenter').keydown(function(evt){ 
    if ((evt.keyCode) && (evt.keyCode == 13)) 
    { 
     $.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: {text:$(this).val()} 
     }); 
     evt.preventDefault(); 
     return false; 
    } 
}); 

決賽,現場準備代碼:

$(document).ready(function(){ 
    function submitMe(selector) 
    { 
     $.ajax({ 
      type: "POST", 
      url: "some.php", 
      data: {text:$(selector).val()} 
     }); 

    } 
    $('#textbox_button').click(function(){ 
     submitMe('#textbox'); 
    }); 
    $('#textbox').keydown(function(evt){ 
     if ((evt.keyCode) &&(evt.keyCode == 13)) 
     { 
     submitMe('#textbox'); 
     evt.preventDefault(); 
     return false; 
     } 
    }); 
+0

嗨約翰...我只想問一件事......當用戶沒有完成輸入時,它甚至會發送數據,或者在用戶完成輸入後它會發送數據....因爲聽起來像幾乎所有擊鍵後都會發送數據... ..無論如何,我可以確保用戶已經完成輸入 – koool 2011-05-19 21:48:13

+1

是的,這發送每個按鍵。您想如何檢測用戶是否已完成打字?有幾個選項:用戶點擊輸入,用戶點擊表單。如果是後者,只需將'.change(function'改爲'.blur(function')。前者是可行的,但需要另外一行或兩行代碼。 – 2011-05-19 21:57:12

+0

進入或者我有一個表單點擊按鈕可以通知該用戶已完成...感謝您的回覆 – koool 2011-05-19 22:04:52

3

您需要使用Javascript將AJAX POST請求發送回服務器上的PHP。

有一個很好的教程here,它使用jQuery來驗證表單,發送給服務器,然後根據服務器的響應向用戶顯示一條消息。

+0

我知道我們可以做到這一點與AJAX ....但是有沒有其他替代AJAX – koool 2011-05-19 21:35:08

+1

沒有隊友沒有不幸 – 2011-05-19 21:35:40

+1

@koool:AJAX實際上只是一個名字,可以連接到服務器的所有技術,而無需張貼表格。沒有AJAX,你什麼都沒有。有沒有你想避免的特定品牌的AJAX? – mellamokb 2011-05-19 21:36:07

2

你必須使用AJAX。

我強烈建議使用jQuery的:)

jQuery

1

我不確定你所說的「普通按鈕」的意思,但如果你不想使用<input type="submit">,您可以使用<button type="submit">

A button爲您提供了更大的佈局自由度,但如果在一個頁面中使用多個button元素,舊版本的IE會變得困惑。

2

幾種方法可以做到這一點......

聽起來好像你是一個非重定向解決方案後,所以我建議jQuery的(這是我最喜歡的,但也有實現AJAX很多其他的解決方案),並做類似如下:

假設你有一個文本框和按鈕這樣的:

<input id="txt_input" type="text" /> 
<input id="btn_send" type="button" value="Submit" /> 

然後做這樣的事情

$(document).ready(function() { 
    $("#btn_send").click(function() { 

     // Do stuff BEFORE sending... // 
     callAFunction(); 
     var test = "asdfasdf"; 

     // Send the text to PHP // 
     $.post("test.php", { input: $("#txt_input").val()}, 
      function(data) { 
       alert("test.php returned: " + data); 
      } 
     ); 

     // Do more stuff after sending.... // 
     callAnotherFunction(); 
    }); 
}); 

我相信會得到你以後有什麼。有關jQuery和更多選項與$ .post,更多信息,請點擊這裏:http://api.jquery.com/jQuery.post/

希望幫助!

+0

HI ...謝謝你的回答,但是點擊我想跟其他2個javascript函數一起調用這是可能的 – koool 2011-05-19 21:50:11

+2

Sure !我將編輯我的答案以顯示如何。 – JFitzDela 2011-05-19 21:52:56

+0

非常感謝..我會嘗試一下...我欣賞這個 – koool 2011-05-19 21:56:07