我正在构建一个网站,在某些部分我需要用户在页面中选择三个选择元素的三个选项,然后单击搜索按钮在数据库中搜索用户想要的内容..但是php没有获取数据从表单中没有设置按钮的类型提交..这导致按钮重新加载页面..但我不希望重新加载页面。
我试图将表单的操作设置为处理数据的php文件,但这使情况变得更糟,并且如果点击搜索按钮则将用户重定向到php文件
表单的html代码
<form method="post">
<select class="select_box">
<option value="Choose a category">Choose a category</option>
<option value="category1">category1</option>
<option value="category2">category2</option>
<option value="category3">category3</option>
</select>
<select class="select_box">
<option value="Choose a place">Choose a place</option>
<option value="place1">place1</option>
<option value="place2">place2</option>
<option value="place3">place3</option>
<option value="place4">place4</option>
</select>
<select class="select_box">
<option value="Choose budget">Choose budget</option>
<option value="budget1">budget1</option>
<option value="budget2">budget2</option>
<option value="budget3">budget3</option>
<option value="budget4">budget4</option>
</select>
<button type="button" name="search_btn">Search</button>
</form>
我希望页面没有重新加载并显示基于php文件搜索的数据,但实际发生的是页面重新加载但是预期的数据出现在为它指定的位置
您正在寻找的是AJAX。你要做的是使用JavaScript发布表单的内容,然后该函数等待来自PHP页面的响应。
这是我使用的一段代码,正是出于这个原因。您可以轻松修改它以适合您自己的形式:
function sendMessage(formName) {
//Put the name of your form here - make sure your FORM has a NAME and ID tag
formIs = document.quoteSubmitForm;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
//Run this part to display the response to the user.
innercontent = "<span class='close' onclick='closeModal()'>×</span>" + xhttp.responseText;
document.getElementById("modalContent").innerHTML = innercontent;
}
};
//Use this to fill in the name of the PHP which you intend to POST to.
xhttp.open("POST", "quotes/submitnew.php");
xhttp.send(new FormData (formIs));
}
您可以使用Ajax,因为它允许您更新网页而无需重新加载页面
在活动中添加此内容
$.ajax({
url: 'yourphpfile.php',
//get or post
type: 'post',
data: {
//name & password optional
name: 'yourinputdata',
password: 'yourinputpassword'..
},
success: function(response) {
location.reload(); // reloading page
}
});
在php文件中,使用isset($ _ POST ['name'])和isset($ _ POST ['password'])来确保您正在接收值并根据需要操作它们。