gpt4 book ai didi

php - 使用 ajax php 和 mysql 自动完成

转载 作者:行者123 更新时间:2023-12-01 06:29:30 25 4
gpt4 key购买 nike

我有一个带有两个文本框和一个提交按钮的表单。第二个框自动完成输入。提交后,页面刷新并显示一个包含两个文本框内容的表格(使用ajax)。

自动完成数组存储在 mysql 中。文本框的值存储在 mysql 中的单独表中。

这些是代码:

1) autotesting.html

<html>
<head>
<title>PHP using AJAX</title>
<script type=""text/javascript" src="prototype.js"></script>
<link rel="stylesheet" href="autocomplete.css" type="text/css" media="screen">
<script src="jquery.js" type="text/javascript"></script>
<script src="dimensions.js" type="text/javascript"></script>
<script src="autocomplete.js" type="text/javascript"></script>

<script type="text/javascript">

var time_variable;

function getXMLObject() //XML OBJECT
{
var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP") // For Old Microsoft Browsers
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") // For Microsoft IE 6.0+
}
catch (e2) {
xmlHttp = false // No Browser accepts the XMLHTTP Object then false
}
}
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest(); //For Mozilla, Opera Browsers
}
return xmlHttp; // Mandatory Statement returning the ajax object created
}

var xmlhttp = new getXMLObject(); //xmlhttp holds the ajax object

function ajaxFunction() {
var getdate = new Date(); //Used to prevent caching during ajax call

if(xmlhttp) {
var txtname = document.getElementById("txtname");
var searchField = document.getElementById("searchField");
xmlhttp.open("POST","autotesting2.php",true); //calling testing2.php using POST method
xmlhttp.onreadystatechange = handleServerResponse;
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("txtname="+ txtname + "&searchField=" + searchField); //Posting to PHP File
}
}

function handleServerResponse() {
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
document.getElementById("message").innerHTML=xmlhttp.responseText; //Update the HTML Form element
}
else {
alert("Error during AJAX call. Please try again");
}
}
}




$(function(){
setAutoComplete("searchField", "results", "autocomplete.php?part=");
});
</script>

</script>
<body>
<form name="myForm">
<table>
<tr>
<td>Add New Item Type</td>

<td>

<p id="auto">
<label>Colors: </label><br>
<input type="text" id="txtname" name="txtname" /><br><br>
<input id="searchField" name="searchField" type="text" /><br><br>

</p>
</td>
</tr>
<tr>
<td colspan="2"><input type="button" value="Add new item" onclick="ajaxFunction();" />


</tr>
</table>
<div id="message" name="message"></div>
</form>
</body>
</head>
</html>

2) autotesting2.php

<?php
$conn = mysql_connect("localhost","demo","demo");
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$txtname = $_POST["txtname"];
$searchField = $_POST["searchField"];
$sql = "INSERT INTO test3 (txtname,searchField) VALUES ('$txtname','$searchField')";
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not enter data: ' . mysql_error());
}
echo "<table border='2' cellspacing='5' cellpadding='5'>";
$result=mysql_query("SELECT * FROM test3");
while($row=mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['txtname'] . "</td>";
echo "<td>" . $row['searchField'] . "</td>";
echo "</tr>";
}
echo "</table>";echo "<br>";
mysql_close($conn);
?>

3) autocomplete.php

<?php

$link = mysql_connect('localhost', 'demo', 'demo');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
if (!mysql_select_db("test_db")) {
echo "Unable to select test_db: " . mysql_error();
exit;
}

$result = mysql_query("SELECT name FROM sks_color");
while ($row = mysql_fetch_assoc($result)) {
$colors[]=$row['name'];
}
mysql_free_result($result);
mysql_close($link);

// check the parameter
if(isset($_GET['part']) and $_GET['part'] != '')
{
// initialize the results array
$results = array();

// search colors
foreach($colors as $color)
{
// if it starts with 'part' add to results
if( strpos($color, $_GET['part']) === 0 ){
$results[] = $color;
}
}

// return the array as json with PHP 5.2
echo json_encode($results);
}

代码工作正常,直到页面刷新并且表格包含带有 [object HTMLInputEle] 的单元格而不是文本框的内容。此外,数据库中的表会使用 [object HTMLInputEle] 插入。

问题是什么?请帮忙。

最佳答案

首先,如果您不打算使用 jQuery,为什么要加载它?jQuery 已经拥有您需要做的一切 AJAX requests ,因此您可能想尝试一下(尤其是在加载它时),而不是创建自己的 xmlhttp 对象。

接下来,如果您尝试让自动完成功能正常工作,因为您已经加载了 jQuery,您可能还需要加载 jQuery UI然后您可以使用jQuery UI autocomplete .

这应该是您在这里尝试做的一切。

关于php - 使用 ajax php 和 mysql 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8831249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com