php - 有没有办法只使用 PHP 和 JavaScript 来提交表单而不刷新页面?
问题描述
我在大学有一个项目,我不想在提交表单后刷新页面。
问题是对于这个项目,我只允许使用基础编程语言,因此我不能使用 jQuery(我使用 post 方法找到了解决方案)或任何类型的库或框架。还有其他方法吗?
如果没有额外的库/框架就无法做到这一点,那么使用 PHP 获取表单信息的最佳方法是什么?表单应该有 GET 或 POST 方法吗?我在网上看到了许多不同的类型,我想确定哪一种效果最好(例如我在项目中拥有的登录、注册表单)。
解决方案
你可以使用纯 JS 和 PHP,这是一个简单的例子。您可以使用事件侦听器和XMLHttpRequest对象来发出请求。我建议使用 POST 请求。
POST 和 GET 有什么区别?
GET 和 POST 方法都用于 HTTP 协议中从客户端到服务器的数据传输,但两种方法的主要区别在于 GET 在 URL 字符串中附加请求参数,而 POST 在消息体中携带请求参数,这样更安全在http协议中从客户端传输数据到服务器。通常当你在处理pass和email等数据时,你必须使用 POST,以避免出现安全问题
var myForm = document.getElementById('my_form');
myForm.addEventListener('submit', (e) => {
e.preventDefault(); // To avoid the page refresh when you click on submit button
})
function login() {
let userEmail = document.getElementById("email_field").value
let userPass = document.getElementById("password_field").value
console.log(`Email: ${userEmail} - Pass: ${userPass}`); // Will print your data
let http = new XMLHttpRequest();
let url = 'get_data.php'; // Your PHP controller
let params = `email=${userEmail}&pass=${userPass}`;
http.open('POST', url, true);
// Send the proper header information along with the request
http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
http.onreadystatechange = function() { // Call a function when the state changes.
if (http.readyState == 4 && http.status == 200) {
alert(http.responseText);
} else {
console.log('Unable to make the request');
}
}
http.send(params);
}
<form id="my_form">
<div>
<input type="email" id="email_field" placeholder="email">
</div>
<div>
<input type="password" id="password_field" placeholder="password">
</div>
<button onclick="login()">login</button>
</form>
推荐阅读
- c# - 保留选定的文件以供进一步使用
- swiftui - 如何在 SwiftUI 中逐个元素地显示和放大卡片视图水平列表中的元素?
- ios - 活动指示器忽略延迟功能
- linux - Golang 无法安装包
- python - 如何将二进制字符串列表放入二维数组
- sql-server - 存储过程,子查询返回超过 1 个值
- r - R:带有隐藏字段的 Web 抓取 .aspx 表单,“未知字段名称”错误
- mysql - 错误代码:1822。添加外键约束失败。引用表 'Works' 中的约束 'project_ibfk_1' 缺少索引
- python - Geopandas - 在与多边形相交处分割线,在新链接属性中保留多边形 ID
- python - 如何使用 BeautifulSoup 加快解析速度?