如何在不更改页面的情况下将javascript值放入php变量?

时间:2016-12-02 15:55:34

标签: javascript php ajax variables

我有这个 research.php 文件,它应该显示数据库表的内容,从javascript表单中获取查询信息。

我在javascript中使用了表单并禁用了回车键,因此只有按下按钮即可提交值。应使用表单中组件的值来进行查询。我可以将值传递给同一文件中的php变量吗?

<!DOCTYPE html>
<html>

<head>
<!--
    Implemented by Argese Alessandro and Rosso Kevin

    The slider is taken from "https://dhtmlx.com/docs/products/dhtmlxSlider/samples/index.html"
    Download slider: "https://dhtmlx.com/docs/products/dhtmlxSlider/"
-->

    <title>Ricerca diplomati</title>

    (...) <!--slider things-->

    <style>
        (...)
    </style>

    <script>
        var mySlider;

        function doOnLoad(){ //slider load
            (...)
        };

        function doOnUnload(){ //slider unload
            (...)
        };

        window.addEventListener('keydown', function (event) {

            // if the keyCode is 16 ( shift key was pressed )
            if (event.keyCode == 13) {
                // prevent default behaviour
                event.preventDefault();
                return false;
            }

        });

        function interact(form){  
            (...) //here the value is put in js variables, for a test
        });

    </script>

</head>

<body onload="doOnLoad();" onunload="doOnUnload();">

    <form id="filters" name="filters" action="#" enctype="text/plain">
        <table cellspacing="0" cellpadding="0" border="0" class="filters_table">
            <tr>
                <td>Specializzazione:</td>
                <td>
                    <select name="specialization" class="table">
                        <option selected value="0">Tutte le specializzazioni</option>
                        <option>Chimica</option>
                        <option>Elettrotecnica</option>
                        <option>Informatica</option>
                        <option>Meccanica</option>
                    </select>
                </td>
                <td></td>
                <td></td>
                <td>Valutazione finale:</td>
                <td><div id="sliderObj"></div></td>
                <td><span id="sliderLink"></span><span class="minussign">-</span><span id="sliderLink2"></span></td>
                <td></td>
                <td></td>
                <td>Città:</td>
                <td><input type="text" name="city" size="35" maxlength="40" value=""></td>
                <td></td>
                <td><input type="button" onclick="interact(filters)" value="search" style="background: url(res/magnifying-glass-16x.png); background-repeat: no-repeat; background-position:center; background-color: #0c84e4;width:24px; height:24px;"></td>
            </tr>
        </table>
    </form>

    <?php

        function viewTable(){
            echo "Here the table will be shown";
        }
    ?>

</body>
</html>

在此代码中,按钮单击只需调用 interact 函数,该函数显示带有变量值的警报窗口。

我尝试使用ajax,但据我所知,它会打开一个新文件。 我也看到了有人建议使用cookie的解决方案,但是这个解决方案真的让我感到厌恶。

我找到的最有用的事情是: How do i store select value into a php variable, 但POST方法刷新页面,滑块粉碎。

2 个答案:

答案 0 :(得分:0)

我认为你对php(服务器端)和js(客户端)之间的整个工作流程有点困惑。或者我可能错了你的问题。但这里有一个关于如何处理这个问题的提示。

  1. 你有一个运行php的服务器端 - 很棒。
  2. 你有一个带有js的html页面 - 很棒。
  3. 在html页面中,您有一个表单要根据用户提交运行查询:
  4. AJAX就是这样。你可以使用纯javascript或像jquery这样的插件来实现。在php方面,你甚至可以保留一个小的,单独的脚本来处理这个请求,运行查询并生成结果。使用“onSubmit”表单来调用ajax。

答案 1 :(得分:0)

如果你想将一个变量从JS传递到PHP你将要使用AJAX,它允许你从运行PHP脚本的服务器发送和接收信息。

您的Javascript:

var infobeingsent = "test";
$.ajax({
    type: "POST",
    url: 'YOURPHPFILE.php',
    data: { testVAR : infobeingsent },
    success: function(data)
    {
        alert("data has been sent");
        var recievedvar = data;
    }
});

你的php文件:

if(isset($_POST['testVAR']))
{
    $recievedvar = $_POST['testVAR'];
    echo "Hey, ive recieved your request";
}

使用AJAX意味着您的浏览器永远不必直接与php文件联系,并且不会从最终用户的角度中断