当我开始输入搜索字段时,为什么我会一直得到注意:未定义索引和未找到数据?
这是我的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之间建立连接存在问题。
感谢您的帮助
答案 0 :(得分:1)
更改以下行:
data:search,
到
data:{
search: search
}
再试一次。
说明: data
是一个object
,其中包含key : value
对。像:
data: { key1: value1 }
你可以在php中获得它的价值:
$data = $_POST['key1']; // here `$data` contains `value1` in it