如何在PHP和JS之间共享变量?

时间:2014-05-06 15:49:11

标签: javascript php html forms

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

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

  1. 如何在提交表单后阻止页面刷新?
  2. 如何将数组传递回JS?
  3. 代码更新:

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

    我的PHP / HTML:

    <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:

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

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

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

<强> HTML:

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="path-to-scripts.js"></script>
</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的:

(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的:

...
}).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调用,这可能导致&#34;回调地狱&#34;。你可能想看一下 Using a promise to make your life a lot easier.