2016-03-06 169 views
0

我想從js調用一個php文件。我沒有Ajax的經驗,所以我不知道如何正確使用它。我用這個功能:Ajax調用PHP函數

function start(cod){ 
    var result =0; 
    $.ajax({ 
     type: "POST", 
     url: "CheckDetails.php", 
     datatype: "html", 
     async: false, 
     data: {cod: cod}, 
     success: function(data) { 
      result = data; 
     } 
    }); 
    return result; 
} 

而且PHP文件:

<?php 

check($_POST['cod']); 

function check($cod) 
{ 
    mysqli_report(MYSQLI_REPORT_STRICT); 
    $dbhandle = 0; 
    try { 
     $username = 'root'; 
     $password = ''; 
     $hostname = 'localhost'; 
     $dbhandle = new mysqli($hostname, $username, $password, 'db') ; 
    } catch (Exception $e) { 
     echo "Service unavailable"; 
     exit; 
    } 
    $name = ''; 
    $date = ''; 
    $hour = ''; 

    $result = 0; 
    $codeResult = mysqli_query($dbhandle, "SELECT name, date, hour FROM records WHERE cod = '$cod'"); 
    if (!$codeResult) { 
     echo('Database error: ' . mysqli_error($dbhandle)); 
    } else 
     if ($row = mysqli_fetch_assoc($codeResult)) { 
      $name = $row{"name"}; 
      $date = $row{"date"}; 
      $hour = $row{"hour"}; 
      $result = 1; 
     } 
    echo $result; 
} 

?> 

但似乎不起作用。我真的不知道問題在哪裏。

+1

您是否在瀏覽器控制檯中檢查AJAX是否正常工作,並且您從服務器獲得響應? – Tushar

+1

我不知道在哪裏我應該在開發工具中尋找。 – Ann

+1

查看Dev工具中的'Networks'選項卡。您可以在那裏檢查網絡請求。 – Tushar

回答

0

它看起來在您的數據庫查詢中,您只能從表中讀取第一個結果集,並且不返回結果。如果我得到你的意圖的權利,你會在你的最後一個「其他」條款是這樣的:

... 
else { 
    while($row = mysqli_fetch_array($codeResult)) { 
     $data[] = array("name" => $row["name"], "date" => $row["date"], "hour" => $row["hour"]); 
     } 
    } 
... 

具有$聲明數組在前面的代碼數據。這樣你就可以將你的查詢結果存儲在一個$ data數組中,你可以直接返回它或者作爲一個json_encoded對象。