所以我有一个简单的问题,但我找不到答案。
我有一个表单,用户在文本字段中键入内容,然后单击“添加”值的提交按钮。右边会有列表,每次用户点击添加时,右边的列表中都会添加一个淡入淡出动画的元素。
我正在使用php来制作它,以便每次用户点击添加时,它会查询数据库并找到用户正在查找的内容。如果它不在数据库中,则将其插入数据库。
当用户点击“添加”时,我正在使用javascript / jquery来淡化动画。
我知道如何单独执行这些操作,但是当我单击“添加”按钮(提交按钮)时,整个页面刷新,php工作正常,但没有动画。
我尝试在jquery上使用preventDefault(),动画工作正常,但php代码没有注册?我将如何使它,以便PHP和JavaScript不切断对方?这与ajax有什么关系吗?感谢
答案 0 :(得分:1)
您需要使用jquery Ajax函数。这些是特别制作的,这样你就可以在没有页面刷新的情况下调用php脚本。
Click Here获取有关Ajax帖子功能的官方文档,以及如何使用它们。
答案 1 :(得分:1)
这是我想出的一个例子。希望这对你有所帮助。
这是您的表单所在的位置以及显示添加项目的位置。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Page Title</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
<!--
jQuery(function($) {
// Declare DOM elements for quick access
var itemsList = $('#items-list'),
searchInput = $('#search-input');
// click event handler for the 'Add' button
$('#add-btn').click(function(e) {
// Prevent the form from being sent
e.preventDefault();
var searchValue = searchInput.val();
// Send the AJAX request with the search parameter
$.post('search.php', {
search: searchValue
},
function(data, textStatus) {
// data is returned as a json object
if (data.found) {
// Create a new hidden element into the list
// and make it fade in
$('<p class="item">'+searchValue+'</p>').hide()
.appendTo(itemsList)
.fadeIn();
}
}, 'json'
});
});
});
//-->
</script>
</head>
<body>
<form action="index.php" method="post" id="search-form">
<div>
<input type="text" name="search" id="search-input">
<input type="submit" id="add-btn" value="Add">
<div id="items-list"></div>
</div>
</form>
</body>
</html>
<?php
// AJAX Request?
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// Prepare the reponse
$response = array('found' => FALSE);
// Check that the search parameter was provided
$search = filter_input(INPUT_POST, 'search', FILTER_SANITIZE_STRING);
if (!empty($search)) {
// Note: We'll assume a connection to a MySQL database
// with the following constant already declared
$mysqli = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_NAME);
// Make sure that the connection was successful
if (!$mysqli->connect_error) {
$query = "SELECT id, keyword FROM search_table WHERE keyword = ?";
// Check if the search keyword already exists
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $search);
$stmt->execute();
// Create a new entry if not found
if (0 == $stmt->num_rows()) {
$query = "INSERT INTO search_table(keyword) VALUES(?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param('s', $search);
$response['found'] = $stmt->execute();
}
else {
$response['found'] = TRUE;
}
}
}
echo json_encode($response);
}
未经测试,如果您遇到任何问题请与我联系。
干杯,