如何在另一个php文件中从ajax获取变量
How get variable from ajax in another php file
问题是,当我点击"提交数据"按钮时,我会得到响应(这是正确的),但当我单击"转到php文件"链接(与以前的php文件相同)时,我就会得到Undefined index:firstname和Undefined index:lastname错误。我该怎么修?
这是我的代码:
<html>
<head>
<script>
function ajax_post(){
// Create our XMLHttpRequest object
var hr = new XMLHttpRequest();
// Create some variables we need to send to our PHP file
var url = "my_parse_file.php";
var fn = document.getElementById("first_name").value;
var ln = document.getElementById("last_name").value;
var vars = "firstname="+fn+"&lastname="+ln;
hr.open("POST", url, true);
// Set content type header information for sending url encoded variables in the request
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// Access the onreadystatechange event for the XMLHttpRequest object
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("status").innerHTML = return_data;
}
}
// Send the data to PHP now... and wait for response to update the status div
hr.send(vars); // Actually execute the request
document.getElementById("status").innerHTML = "processing...";
}
</script>
</head>
<body>
<h2>Ajax Post to PHP and Get Return Data</h2>
First Name: <input id="first_name" name="first_name" type="text"> <br><br>
Last Name: <input id="last_name" name="last_name" type="text"> <br><br>
<input name="myBtn" type="submit" value="Submit Data" onclick="ajax_post();"> <br><br>
<div id="status"></div>
<a href="my_parse_file.php">go to the php file</a>
</body>
和php文件
<?php
echo 'Thank you '. $_POST['firstname'] . ' ' . $_POST['lastname'] . ', says the PHP file';
?>
因为两者都是不同的请求:
当您使用AJAX传递参数firstname
和lastname
时。您必须使用GET
请求在URL
中传递相同的内容。
转到php文件
<?php
echo 'Thank you '. $_REQUEST['firstname'] . ' ' . $_REQUEST['lastname'] . ', says the PHP file';
?>
输出:
感谢abc
xyz
,PHP文件说
它将在Submit button
和Hyperlink
中工作。
通过单击链接,浏览器不会向服务器端发送POST请求,而是发送GET请求。这就是为什么全局数组$_POST不包含您试图在PHP文件中检索的元素。错误消息指出$_POST数组中没有像"firstname"answers"lastname"这样的元素。建议添加检查数组元素是否存在,如下所示:
<?php
if (isset($_POST['firstname']) && isset($_POST['lastname'])) {
echo 'Thank you '. $_POST['firstname'] . ' ' . $_POST['lastname'] . ', says the PHP file';
} else {
echo 'Nothing to say';
}
感谢R J的解释。现在我把它修好了,工作正常。
但我很担心,因为我使用这个代码只是为了训练。在我的主要问题中,我需要通过ajax将真实对象(而不是字符串等)发送到我的php站点,所以我无法将其添加到url中,可以吗?
相关文章:
- React路由器服务器端渲染和ajax获取数据
- JS-使用Ajax获取文件名
- 在chrome扩展中使用AJAX获取目录中的文件数
- 查找AJAX获取和发布时使用的网络数据的obsolute或可能的估计值
- jQuery AJAX获取Vimeo缩略图
- 使用ajax获取通过FTP上传的文件的文件大小——试图防止ajax中断自身
- 通过Ajax获取变量
- 在.js文件上使用Ajax获取JSONP
- 通过AJAX将从AJAX获取的值发送到另一个PHP文件
- 使用 AJAX 获取 XML,然后将其解析为 JSON(无需服务器)
- 如何在控制器代码点火器中从 ajax 获取数据
- 使用 Ajax 获取表单数据
- 从 Ajax 获取由 ZombieJS 的异步点击事件触发的 Http 错误
- PHP没有从$.ajax获取POST数据
- Ajax获取数据以获取另一个Ajax数据
- AJAX获取请求有时会在iOS Safari上失败
- 如何在另一个php文件中从ajax获取变量
- AngularJS中使用ajax获取数据的最佳方式是什么
- 在react组件中使用ajax获取实时更新的数据
- 当使用AJAX获取PHP文件以从MySQL数据库中检索数据时,会出现下拉表单disapering