这是我的脚本,这很好用...... send_array_to_other_page.html
$(function(){
//DECLARE ARRAY
var arr = new Array();
var i = 0;
$('#form').submit(function(e){
e.preventDefault();
var value = $('#box').val();
var index = arr.length;
var list = '';
//ADD VALUE TO ARRAY
arr[index] = value;
//OUTPUT VALUES IN ARRAY
for (var index in arr){
list+=index+': '+arr[index]+'<br/>';
$('#arrLength').html(arr.length);
}
//DISPLAY ARRAY
$('#display').html(list);
$('#form').get(0).reset(); //RESET FORM
});
$('#submit').click(function(){
window.location = 'send_array_to_other_page_2.php?list='+arr;
});
});
这不是。它输出Array content lost
。我还想指出此页面的网址是send_array_to_other_page_2.php
。它遗漏了?list=
<?php
$arr = $_GET['list'];
echo 'The contents of the array are still... <br/>';
if(isset($arr)){
print_r($arr);
} else {
echo 'Array content lost';
}
?>
答案 0 :(得分:1)
不要通过网址发送“长”数据。大多数浏览器都有一个长度限制,很容易超过它并最终导致数据损坏。对于“大”数据,请使用POST,但不限于此。
要发送数组本身,只需执行一个AJAX请求,然后让jquery将数组编码为JSON。然后,您使用json_decode()
在PHP中处理它,最终将使用本机PHP数组。
答案 1 :(得分:1)
$(function(){
//DECLARE ARRAY
arr = new Array();
var i = 0;
$('#form').submit(function(e){
e.preventDefault();
var value = $('#box').val();
var index = arr.length;
var list = '';
//ADD VALUE TO ARRAY
arr[index] = value;
//OUTPUT VALUES IN ARRAY
for (var index in arr){
list+=index+': '+arr[index]+'<br/>';
$('#arrLength').html(arr.length);
}
//DISPLAY ARRAY
$('#display').html(list);
$('#form').get(0).reset(); //RESET FORM
});
$('#submit').click(function(){
window.location = 'send_array_to_other_page_2.php?list='+arr;
});
});
尝试不使用var arr使其成为全局的,我不相信子函数正在解析它。
答案 2 :(得分:0)
修改:根据您的评论更新了JavaScript on jsfiddle。在“提交”时,使用.data()方法将数组保存在“#form”元素中。在“点击”“#submit”按钮时,将检索该数据并建立网址。
click事件在提交事件之前触发(至少在我的Firefox 7中),因此当连接到URL字符串时,您的数组为空。
我把some JavaScript on jsfiddle放在一起可能有所帮助。您实际上不需要绑定到提交按钮的click事件,只需在提交处理函数中执行“重定向”。无论如何,你正在构建字符串list
。因此,首先触发的是点击或表单提交事件,不会产生混淆。
至于数组的序列化,我使用了jQuery's .each() function,但手工完成没有任何错误(如果正确完成)。
我还可以想象表单实际上已发布,这就是为什么你没有看到URL的“?list”搜索部分。
如果您不需要完整的重定向,为什么不使用jQuery.get()发送数据?