如何将值从JavaScript函数传递给PHP变量?

时间:2014-01-19 22:50:46

标签: javascript php html

我有一个JavaScript来处理文本输入的onkeydown事件。如何将此输入或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>

2 个答案:

答案 0 :(得分:0)

轻松!使用HTTP请求,并通过将值放入URL来创建GET变量,或者通过将值放在请求标头中来创建POST变量。这可以通过HTML表单,或使用AJAX,或javascript重定向或其他一些方法来完成。

然后,您可以在PHP中使用数组:$_GET$_POST$_REQUEST来检索变量。

ex:$_GET['my_var']

答案 1 :(得分:0)

简单,但取决于你想要做什么。以下是一些示例代码段:

<?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. 脚本处理输入事件(按键)并等待值插入输入

  3. 脚本正在发送带有输入值的ajax请求作为参数

  4. PHP代码从$ _POST超全局数组获取值,并将其插入到PHP变量中

  5. PHP代码正在向JS脚本发送响应,所有这些都很好,而且这个响应会打印在您的控制台中(您可以随心所欲地做任何事情 - 需要它)

  6. 问题:它会向服务器发送大量请求,因此请考虑更好的方法(change事件而不是keypress?)