2016-03-06 170 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对象。