无法访问PHP变量

时间:2015-10-03 02:45:27

标签: javascript php

自从过去24小时以来,我正在努力/尝试一个简单的事情,我无法理解为什么我无法访问PHP变量。我知道我做错了什么,我不知道那是什么......

window.alert("Variable" + <?php  echo $_POST; ?> );

它的输出为Function Array() {[native code]},我如何打印值?我认为POST属性是空白的,任何人都可以检查?为什么POST变量是空白的?

我通过POST方法将数据发送到文件

<script type="text/javascript">
function callAjaxAddition() {
    arguments0 = {
        arg1: $("#exampleForm input[id='pac-input']").val(),
        arg2: ("#exampleForm input[id='pac-input']").val()
    };
    $.ajax({
        type: "POST",
        url: "processAjax.php",
        data: {
            arguments: arguments0
        },
        success: function(data) {
            $("#answer").html('<ul><li>' + data + '</li></ul>');
            send_apptn_req();
        }
    });
    return false;
}
</script>

和ProcessAjax.php文件是

<?php $a=0;foreach($_POST['arguments'] as $v) $a= $v;echo $a;?>

先谢谢你..

2 个答案:

答案 0 :(得分:1)

  

$_POST是传递给当前变量的关联变量数组   脚本。

因此您需要使用print_r代替echo

window.alert("Variable" + <?php  print_r($_POST); ?> );

答案 1 :(得分:0)

$_POST是一个数组,因此您应该使用print_r()var_dump()代替echo

window.alert("Variable" + <?php  print_r($_POST); ?> );

如果在Javascript中调试$ _POST变量是你想要做的,我建议你这样做:

console.log(<?php echo json_encode($_POST); ?>);

您将在浏览器中看到开发者工具中的内容。

作为参考,您可以查看此question的答案。

修改

<form method="POST">
  <input type="text" name="first"/>
  <input type="text" name="second" />
  <input type="submit" value="submit">
</form>

<?php if (isset($_POST)): ?>
  <script type="application/javascript">
    console.debug(<?php echo json_encode($_POST); ?>);
  </script>
<?php endif; ?>

编辑2 :(更新代码后)

将ajax jQuery函数中的type选项更改为method,如下所示:

<script type="text/javascript">
function callAjaxAddition() {
    arguments0 = {
        arg1: $("#exampleForm input[id='pac-input']").val(),
        arg2: $("#exampleForm input[id='pac-input']").val()
    };
    $.ajax({
        method: "POST",
        url: "processAjax.php",
        data: {
            arguments: arguments0
        },
        success: function(data) {
            $("#answer").html('<ul><li>' + data + '</li></ul>');
            send_apptn_req();
        }
    });
    return false;
}
</script>

另请注意,在AJAX POST之后,您的$_POST变量将包含您传递给data函数的$.ajax对象,因此您传递的是:

 data: {
   arguments: {
    arg1: $("#exampleForm input[id='pac-input']").val(),
    arg2: ("#exampleForm input[id='pac-input']").val()
   }
 }

将转化为:

Array (
  'arguments' => Array (
    'arg1': 'value of arg1'
    'arg2': 'value of arg2'
  )
)

所以processAjax.php中的循环是没用的,因为你没有循环遍历内部数组。