php - 如何正确设置简单的 AJAX
问题描述
因此,如果我在没有 ajax 的情况下设置它,它就可以正常工作。一旦我包含 ajax,页面就会加载带有“?search=63105”的 url 栏,但结果 div 中没有显示任何内容
HTML + jQuery
<form>
<input type="text" name="search" id="search" placeholder="Search"/>
</form>
<div id="results"></div>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
$(function () {
$("form").on('submit', (function(e){
var search = $('#search').val();
var dataString = 'search=' + search;
e.preventDefault();
$.ajax({
type: "POST",
url: "searchpost.php",
data: dataString,
success: function(data) {
$('#results').html(data);
}
});
});
});
</script>
PHP 页面
<?php
require_once('../config/db.php');
require_once('../customLIB/pdo_db.php');
require_once('../models/test.php');
$SalesRep = new SalesRep();
if ($_POST['search']) {
$data = $_POST['search'];
$rep = $SalesRep->getRep($data);
if (!empty($rep)) {
echo $rep->name;
} else {
echo "No sales reps found..";
}
}
?>
同样,即使应该显示结果,也没有显示任何内容。PHP 工作,这是没有问题的。
谢谢。
解决方案
表单提交函数,你有这条线e.preventDefault()
,但是,该函数从不接受事件参数e
。
$("form").on('submit', (function(){
e.preventDefault();
//...
});
应该改为
$("form").on('submit', (function(e) {
e.preventDefault();
//...
});
由于永远不会阻止表单提交,因此表单会像往常一样提交,并且 AJAX 调用不会完全执行。
编辑:此外,以下几行
var search = $('#search').val();
var dataString = 'search=' + search;
应该在提交函数内。只有这样,它才会#search
在提交搜索期间获得 的值。
EDIT4:发现var dataString = 'search=' + search;
无论如何都可以工作,因此可以忽略 EDIT2。
EDIT2:对 PHP 方面不太熟悉,但 POST 数据通常是使用 JavaScript 对象完成的。尝试dataString
成为
var dataString = { search: search };
或者更好的是,让表单自行序列化
var dataString = $('form').serialize();
EDIT3:发现一个额外的括号可能是问题的原因。
$("form").on('submit', -->(function(e){
最终代码应该是
$(function () {
$("form").on('submit', function (e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "searchpost.php",
data: $('form').serialize(),
success: function (data) {
$('#results').html(data);
}
});
});
});
推荐阅读
- php - 为什么 symfony 断言不适用于编辑页面上的 novalidation 属性?
- r - 如何将相关性应用于指定的向量,遍历文件列表?
- python - 计算列表中不同的字典
- react-native - 如何更改此 localStorage 函数以响应本机 AsyncStorage
- ios - 解锁时不显示 Game Center 成就横幅 (Unity)
- api - compojure api + 允许 CORS
- linux - 如何grep所有正好12个字长的行?
- angular - ngx-print 不打印可滚动视图
- php - PHP 从字符串或文件中读取字节范围
- java - Java:使用线程进行文件搜索