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

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


我试图打开新页面sheet.php并回显数组student,我只是简单地检查echo $_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));


白衣非少年
浏览 195回答 2
2回答

收到一只叮咚

您向发出两个请求sheet.php。第一个是“静默” POST请求,第二个是在成功完成第一个POST请求之后的GET请求。第二个请求将不会共享第一个请求的有效负载。如果我正确地理解以下代码,那么您应该做的是...// 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 formtempForm.appendChild(tempInput);// Add the form to the body in order to postdocument.body.appendChild(tempForm);// Submit the formtempForm.submit();// Remove the formdocument.body.removeChild(tempForm);而且,如果您使用的是jQuery,则可以简化上面的代码。$('<form>', {&nbsp; &nbsp; action: 'sheet.php',&nbsp; &nbsp; method: 'POST',&nbsp; &nbsp; target: '_blank',&nbsp; &nbsp; html: $('<input>', {&nbsp; &nbsp; &nbsp; &nbsp; name: 'mnu',&nbsp; &nbsp; &nbsp; &nbsp; value: JSON.stringify(student)&nbsp; &nbsp; }).prop('outerHTML')}).appendTo($('body')).submit().remove();

拉丁的传说

更改http.send('mnu='+JSON.stringify(student));为http.send(JSON.stringify(student));然后在您sheet.php使用json_decode($_POST)中获取您的POST数据
打开App,查看更多内容
随时随地看视频慕课网APP