无法打印从javascript传递给php的数组

时间:2011-06-13 16:11:07

标签: php javascript

这里是代码.......这里我将一个javascript数组传递给php ...出了点问题........

HTML:

    <html>
    <body onload="aa()" >
<script language="javascript">
function aa()
{
var a, s;
a = [ 'one', 'two', 'three'];
s = JSON.stringify( a );
document.getElementById("fb_user").innerHTML= s;
}

    </script>
<form action="check1.php" method="post">
    <label id="fb_user"> </label>
<input type="submit" value="submit"/>
</form>
</body>
</html>

php代码:

<?php

$fb_usr_id =json_decode(  $_POST['fb_user'], true );

    echo $fb_usr_id;
    ?>

当回显$ fb_usr_id时,什么都没有打印?

4 个答案:

答案 0 :(得分:2)

未提交标签标记的内容。

尝试更改
<label id="fb_user"> </label><input type="hidden" name="fb_user" id="fb_user">

答案 1 :(得分:1)

    <html>
    <body onload="aa()" >
<script language="javascript">
function aa()
{
var a, s;
a = [ 'one', 'two', 'three'];
s = JSON.stringify( a );
document.getElementById("fb_user").value = s;
}

    </script>
<form action="check1.php" method="post">
<input type="hidden" name="fb_user" id = "fb_user" value="">
<input type="submit" value="submit"/>
</form>
</body>
</html>

在后端执行此操作,首先检查已发布变量的有效性为json

var_dump( $_POST );

答案 2 :(得分:0)

标签的内容未发布到服务器。相反,请将<input type="hidden">用于不打算由用户编辑的输入:

<input name="fb_user" id="fb_user" type="hidden" />

此外,如果您只想设置输入元素的值,则不应更改innerHTML。而是分配适当命名的value属性。

答案 3 :(得分:0)

您应该如何做到这一点:

<html>
    <body>
    <form action="check1.php" method="post">
        <label id="fb_users_list"></label>
        <input type="hidden" name="fb_user" id="fb_user" value="" />
        <input type="submit" value="submit"/>
    </form>
    <script type="text/javascript">
        (function(){
            var a, s;
            a = [ 'one', 'two', 'three'];
            s = JSON.stringify( a );
            document.getElementById("fb_users_list").innerHTML = s;
            document.getElementById("fb_user").value = s;
        })();
    </script>
    </body>
</html>

使用body onload="",因为您为XSS攻击打开了漏洞。只需将您的脚本放在您的表单下方,或者更好地放在正文的末尾,您就不需要onload个事件。