簡體   English   中英

如何將值從JavaScript函數傳遞給PHP變量?

[英]How to pass value from JavaScript function to PHP variable?

我有一個處理文本輸入的onkeydown事件的JavaScript。 如何將值從此輸入或javascript函數傳遞給php變量? 我不確定表單是否可以正常工作,因為javascript函數在其他地方調用了另一個Ajax函數

  <?PHP
  $valueOfInput = //how to assign this variable to value from text input ??  
   ?>

  <html>
  <head>
  <script>
    function myFunc(e){
     if (e.keyCode == 13)
     {
       pass_data_to_Ajax();  
     }
    }
  </script>

  </head>

 <body>
 <div >        
   <input type="text" id = "lname" value="" onkeydown="myFunc(event)"/>
 </div>

 </body>
 </html>

簡單! 使用HTTP請求,或者通過將值放在URL中來創建GET變量,或者通過將值放在請求標頭中來創建POST變量。 這可以通過HTML表單,AJAX,JavaScript重定向或其他幾種方法來完成。

然后,您可以在PHP中使用數組: $_GET$_POST$_REQUEST來檢索變量。

例如: $_GET['my_var']

容易,但是要取決於您要做什么。 這是一些示例代碼片段:

<?php
if(!empty($_POST['lname'])) {
    $valueOfInput = $_POST['lname'];
    die(json_encode(array('status' => 'success', 'lname' => $valueOfInput)));
}
?>
<html>
    <head>
        <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    </head>
    <body>
        <input type="text" id="lname" name="lname" value="" />
        <script type="text/javascript">
            $(document).ready(function() {
                $("#lname").on("keypress", function() { // waiting for keypress event to be fired
                    setTimeout(function() { // delay to have the key value inserted into input, and affect value param
                        $.post(document.location.href, { lname: $("#lname").val() }, function(data) { // sending ajax post request
                            console.log(data);
                        });
                    }, 50);
                });
            });
        </script>
    </body>
</html>

您沒有寫任何JS框架,但是我認為(入門)從jQuery或其他可以幫助您抽象一些JS功能的框架開始比較容易。

這里簡要說明發生了什么:

  1. 網站正在等待,直到您開始向輸入內容中寫入任何內容為止(就像您的代碼中一樣)

  2. 腳本正在處理鍵入事件(keypress),並等待將值插入到您的輸入中

  3. 腳本發送帶有輸入值作為參數的ajax請求

  4. PHP代碼從$ _POST超全局數組中獲取值,並將其插入到PHP變量中

  5. PHP代碼正在發送對JS腳本的響應,這些響應一切都很好,並且此響應已打印在控制台中(您可以執行所需的任何操作,需要使用它)

問題:它將向服務器發送大量請求,因此請考慮采用更好的方法( change事件而不是keypress ?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM