为什么当我开始在搜索字段中输入内容时,结果总是出现注意:未定义索引和未找到数据?
这是我的 HTML 代码:
<body>
<div class="container">
<br />
<div class="row">
<div class="col-lg-6">
<div class="input-group">
<span class="input-group-btn">
<button class="btn btn-secondary"
type="button">Search</button>
</span>
<input type="text" class="form-control" name="search_text"
id="search_text" placeholder="search by a name">
</div>
</div>
</div>
<br />
<div id="result"></div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('#search_text').keyup(function() {
var search = $(this).val();
$('#result').html('');
$.ajax({
url:"fetch.php",
method:"POST",
data:search,
dataType:"text",
success:function(data){
$('#result').html(data);
}
});
});
});
</script>
</body>
</html>
PHP 代码:
<?php
$serverName = "myServer";
$connectionInfo = array( "Database"=>"myTable", "Uid" => "myUser", "PWD" => "myPassword");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$sql = "SELECT * FROM(SELECT AB.Bezeichnung1 AS Name,
CASE FC.Ebenen
WHEN 1 THEN FC.Komponente1
WHEN 2 THEN FC.Komponente2
WHEN 3 THEN FC.Komponente3
END AS Farbe,
GC.Bezeichnung AS Groesse,
SKU.KommLagerplatz AS Position, SKU.Ueberlagerbereich
FROM Artikel A
LEFT JOIN ArtikelBezeichnungen AB ON (A.Mandant=AB.Mandant AND A.HCode=AB.HCode AND A.Style = AB.Style AND AB.Sprache='DE')
INNER JOIN ArtikelVariantenCSG CSG ON( A.Mandant= AB.Mandant AND A.HCode=AB.HCode AND A.Style = AB.Style)
INNER JOIN ArtikelFarbcodes FC ON (CSG.Farbcode = FC.Farbcode AND CSG.Mandant=FC.Mandant)
INNER JOIN ArtikelVariantenSKU SKU ON(SKU.Mandant=CSG.Mandant AND SKU.HCode=CSG.HCode AND SKU.Style=CSG.Style AND SKU.Farbcode=CSG.Farbcode)
INNER JOIN ArtikelGroessencodes GC ON(GC.Mandant=SKU.Mandant AND GC.Groessencode= SKU.Groessencode)) AS QRY WHERE Name LIKE '%".$_POST["search"]."%'";
$result = sqlsrv_query($conn, $sql);
if($result === false) {
die( print_r(sqlsrv_errors(), true) );
}
if(sqlsrv_num_rows($result) > 0){
$output .='<h4 align="center">Search Result</h4>';
$output .='<div class="table-responsive">
<table class="table table bordered">
<tr>
<th>Name</th>
<th>Farbe</th>
<th>Groesse</th>
<th>Position</th>
</tr>';
while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)) {
$output .= '<tr>
<td>'.$row["Name"].'</td>
<td>'.$row["Farbe"].'</td>
<td>'.$row["Groesse"].'</td>
<td>'.$row["Position"].'</td>
</tr>';
}
echo $output;
}
else{
echo'Data Not Found';
}
sqlsrv_free_stmt($result);
?>
我添加了 sqlsrv 驱动程序以连接到 MSSQL。这样我就可以建立到 SQL 数据库的连接。如何在 $.ajax({}) 和 PHP 之间建立连接存在问题。
感谢您的帮助
最佳答案
更改以下行:
data:search,
至
data:{
search: search
}
然后重试。
说明: data
是一个对象
,其中包含key : value
对。喜欢:
data: { key1: value1 }
你可以在 php 中获取它的值,例如:
$data = $_POST['key1']; // here `$data` contains `value1` in it
关于php - 使用 sqlsrv 和 $.ajax 进行实时搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43062504/