房间是一个数组
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 页面
答案 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();