关于javascript:如何在PHP和JS之间共享变量?

How to share variables between PHP and JS?

我有一个表单,它接受一个输入,理想情况下在PHP中的shell命令中处理它,然后返回一个数组。

表单在运行onChange="onChange();"后由myform.submit();在JS中提交。

  • 提交表单后如何防止页面刷新?
  • 如何将数组传回JS?
  • 代码更新:

    有点AJAX代码,但我不确定如何实现它。

    我的PHP / HTML:

    1
    2
    3
    <form action="test.php" method="post" id="CONFIRM">
    <input class="txt" value="myVal" type="text" size="12" maxlength="9" name="myName" id="myID" onKeyUp="checkUpdate();" onChange="checkUpdate();" onFocus="" />
    </form>

    我的JS:

    1
    2
    3
    4
    function checkUpdate(){
        var form = document.getElementById('CONFIRM');
        form.submit();
    }


    您需要使用某种AJAX请求来阻止浏览器的默认操作。

    HTML:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <html>
    <head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
    <script src="path-to-scripts.js">
    </head>
    <body>
    <form id="myform" method="post" action="">
    <fieldset>
    <legend for="info">Some Info</legend>
    <input type="text" id="info" name="info" placeholder="some info" />
    </fieldset>
    <filedset>
    <input type="submit" value="Submit" />
    </fieldset>
    </form>
    </body>

    JavaScript的:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    (function($) {
    $('#myform').submit(function(event) {
        event.preventDefault();

        $.ajax({
            type: 'post',
            url: 'path-to-your-php-file.php',
            data: $('#myform').serialize(),
            timeout: 50000
        }).done(function(responseData) {
            // Do something with the response data.
        }).fail(function(error) {
            // Not good.
        });
    });
    })(jQuery);

    现在,假设您要使用responseData调用php函数。
    您还需要考虑如何返回responseData。 它是一个对象吗? 这可以确定您处理下一个请求的方式。
    根据您设置的方式,您可以轻松地执行以下操作:

    JavaScript的:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ...
    }).done(function(responseData) {
        if (responseData)
        {
            $.ajax({
                type: 'post',
                data: responseData,
                url: 'path-to-your-next-php-file.php',
                timeout: 50000
            }).done(function(responseData) {
                // Do something with the response data.
            }).fail(function(error) {
                // Not good.
            });
        }
    }).fail(function(error) {
    ...

    但是,这样做,你将开始进入许多嵌套的ajax调用,这可能导致"回调地狱"。 你可能想看一下
    使用承诺让您的生活更轻松。


    有两个问题(答案)可以帮助您:

    • php和Javascript之间的变量

    • 将变量从PHP传递到JavaScript的有效方法