2014-03-03 46 views
0

我有一種表單,只要用戶在電話字段上輸入某些內容,字段值就會發送到一個php,它將爲該電話字段獲取任何可能的名稱和電子郵件並將其存儲在PHP會話中變量:jquery post不會觸發兩次

這是我的jQuery有電話領域:

$('#tel').on('keyup', function() { 
$.post('backproc.php?tel='+$('#tel').val()); 
$('#nombres').val('<?php echo $_SESSION['xnombre'];?>'); 
}); 

我backproc.php正常地接收到信息,妥善檢索了從數據庫中,無論是什麼I型,它總是被由php查詢成功發送和處理。

問題是,根據我的代碼,每次我在電話字段上釋放一個鍵時,nombres字段的值應根據我對會話變量所做的任何更改而發生變化,而這種情況只會發生一次,更糟糕的是,當它觸發時,它會顯示前一個會話變量值,而不是最後一次獲取的值,以及總是顯示最後一個獲取值的操作方法。

回答

3

您需要呼應$ _SESSION [「xombre」]的內容backproc.php並把它jQuery的喜歡

$.post('backproc.php?tel='+$('#tel').val(), function(data) { 
    $('#nombres').val(data); 
}); 

請參閱http://api.jquery.com/jQuery.post/

+0

謝謝2cent!你的代碼真的幫了很多! –

0

問題是您的<?php echo $_SESSION['xnombre'];?>代碼是在Javascript甚至被髮送到您的瀏覽器之前在服務器上生成的。 PHP <??>標籤之間的代碼根本不會發送到客戶端 - 它完全由服務器處理。但是,Javascript當然是在客戶端進行處理的。

您在服務器端和客戶端代碼之間感到困惑。

如果您查看網頁源代碼並查看您的Javascript,您會明白我的意思。

編輯:只是意識到我告訴過你這個問題,沒有給出答案! 2cents的答案是正確的,所以我不會重複他已經說過的話。

+0

謝謝丹!它真的幫了我很大的忙,以避免在JavaScript之前生成的代碼部分,我根據2cent的答案根據你告訴我的和現在一切正常的情況進行了修復,謝謝! –

0

keydown 用戶按下某個鍵時觸發。它在用戶保持按下的狀態下重複。 keypress 將實際字符插入到文本輸入中時觸發。它在用戶保持按下的狀態下重複。

你好,「keydown」事件適用於你的情況(不要使用密鑰,因爲它釋放密鑰後立即觸發)。 使用的keydown(我相信它的工作原理,但如果它不使用按鍵)