gpt4 book ai didi

javascript - 通过ajax发送后如何访问另一个页面中的数组

转载 作者:行者123 更新时间:2023-12-01 01:05:32 24 4
gpt4 key购买 nike

我有一个数组学生。我需要通过 POST 而不是通过 GET 在另一个 php 页面中传递这个数组,因为它可以包含数千个字符。

我正在尝试打开新页面sheet.php并回显数组student,我只是检查回显$_POST['mnu'],但显示未定义索引错误。

var http = null;
if(window.XMLHttpRequest){
http = new XMLHttpRequest();
}
else{
http = new ActiveXObject('Microsoft.XMLHTTP');
}
http.open('POST','sheet.php',true);
http.setRequestHeader('Content-type','application/x-www-form-urlencoded');
http.onreadystatechange = function(){
if(http.readyState==4 && http.status==200){
window.open('sheet.php','_blank')
}
}
http.send('mnu='+JSON.stringify(student));

最佳答案

就像 @RamRaider 评论的那样..您正在向 sheet.php 发出两个请求。第一个是“静默”POST 请求,第二个是第一个 POST 请求成功完成后的 GET 请求。

Request count

第二个请求不会共享第一个请求的负载。

如果我理解正确,下面的代码应该可以满足您的要求......

// Create a form element
// <form action="sheet.php" method="post"></form>
var tempForm = document.createElement('form');
tempForm.setAttribute('action', 'sheet.php');
tempForm.setAttribute('method', 'POST');
tempForm.setAttribute('target', '_blank'); // Open in new tab

// Create an input field
// <input name="mnu" value="...">
var tempInput = document.createElement('input');
tempInput.setAttribute('name', 'mnu');
tempInput.setAttribute('value', JSON.stringify(student)); // Set field value

// Add the input to the form
tempForm.appendChild(tempInput);


// Add the form to the body in order to post
document.body.appendChild(tempForm);

// Submit the form
tempForm.submit();

// Remove the form
document.body.removeChild(tempForm);

如果您使用 jQuery,您可以简化上面的代码..

$('<form>', {
action: 'sheet.php',
method: 'POST',
target: '_blank',
html: $('<input>', {
name: 'mnu',
value: JSON.stringify(student)
}).prop('outerHTML')
}).appendTo($('body')).submit().remove();

关于javascript - 通过ajax发送后如何访问另一个页面中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55679996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com