这里是代码.......这里我将一个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时,什么都没有打印?
答案 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
个事件。