在php页面中通过url从javascript发送数组但是

时间:2013-09-03 14:54:20

标签: php javascript arrays json

房间是一个数组

window.location = "booking_status.php?array="+ JSON.stringify(rooms);

从javascript发送到php页面 在php页面上url显示完整数组值,它们存储在页面地址栏url中的数组中 像那样

  

HTTP://localhost/zalawadi/booking_status.php阵列= [ {%22id%22:10,%22rate%22:100} ]?

我想阻止在网址%22id%22:10,%22rate%22:100

中显示的这些数据

我在php页面解码任何其他方式将数组数据从javascript发送到php 页面

4 个答案:

答案 0 :(得分:2)

将数据发送到另一个页面而不在URL中显示的唯一方法是使用POST。

基本上,您可以将数据放入不可见的表单输入中:

<form method="post" id="form" action="booking_status.php">
    <input name="array" id="array" type="hidden" value="" />
</form>
<a href="" onclick="sendForm(); return false;">Send</a>
<script type="text/javascript">
    function sendForm(){
        document.getElementById('array').value = JSON.stringify(rooms);
        document.getElementByid('form').submit();
    }
</script>

答案 1 :(得分:1)

您可以使用隐藏表单和post方法。然后你会使用$ _POST而不是$ _GET。

<form action="script.php" onsubmit="this.firstChild.value=JSON.stringify(value);">
    <input type="hidden" value="" />
    <a href="javascript:this.form.submit();">Link text</a>
</form>

答案 2 :(得分:0)

为什么不只是POST数据呢?

例如,使用jQuery

$.ajax({
  type: "POST",
  url: "booking_status.php",
  data: JSON.stringify(rooms),
  success: // add success function here!
});

优点是你没有传递一些可怕的URL。作为额外的奖励,此示例也是异步的,因此用户在浏览器中看不到任何刷新。

非框架版

如果您不想使用jQuery,可以使用{Javascript}使用XMLHttpRequest对象执行此操作,如下所示:

var url = "get_data.php";
var param = JSON.stringify(rooms);

var http = new XMLHttpRequest();
http.open("POST", url, true);


http.onreadystatechange = function() {//Call a function when the state changes.
    if(http.readyState == 4 && http.status == 200) {
    // Request has gone well. Add something here.
    }
}
http.send(param);

答案 3 :(得分:0)

您可以使用POST请求,但这需要生成并提交表单:

// assuming `rooms` already defined
var frm = document.createElement('form'), inp = document.createElement('input');
frm.action = "booking_status.php";
frm.method = "post";
inp.type = "hidden";
inp.name = "array";
inp.value = JSON.stringify(rooms);
frm.appendChild(inp);
document.body.appendChild(frm);
frm.submit();