2017-03-28 63 views
2

爲什麼我一直都在使用注意:未定義索引數據未找到因此,當我開始鍵入搜索字段時?

這裏北京時間我的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

嘗試'數據:{搜索:搜索}',也可以作爲你的代碼是目前非常警惕*寬*打開SQL注入。我建議你看看使用準備好的語句 –

回答

1

更改以下行:

data:search, 

data:{ 
    search: search 
} 

,然後再試一次。

說明:data是具有一對key : value在它的object。像:

data: { key1: value1 } 

,您可以在PHP中得到它的值,如:

$data = $_POST['key1']; // here `$data` contains `value1` in it 
+0

我更新了我的代碼,但仍然無法正常工作。現在我得到「無數據」。我怎樣才能檢查我發送到fetch.php? –

+0

現在檢查您的查詢 –