如果需要很长时间返回,php ajax调用将不返回任何内容

时间:2018-10-02 05:50:55

标签: php jquery mysql ajax

我有一个数据库,其中包含1000多个庞大的数据,以后还会增加。

我在表中显示了其中一些数据。有一个搜索框,我正在根据搜索框使用ajax调用将数据库中的数据加载到该表中。

我的表格:

<form class="form-search" role="search" action="#" >
    <div class="form-group">
       <input type="text" class="form-control" id="eml_search" placeholder="Search " name="eml_search">
       <input type="submit" name="btn-search-email" id="btn-search-email" value="" style="display: none;" />
    </div>
</form>

jQuery Ajax:

$(document).ready(function () {
        $('form.form-search').on('submit', function(e) {
            e.preventDefault();
            var eml_search_txt = $("#eml_search").val();
            url = "ajax_search.php";

            $.ajax({
                url: url,
                type: "GET",
                data : {
                    eml_search_txt: eml_search_txt
                },
                dataType: "json"
            }).done(function (data) {
                console.log("Dhukse: " );
                $("#eml-body table").remove();
                console.log("TExt get: " + data.getext);
                console.log(data.mail_list);
                $("#eml-body").html(data.search_list);

            });
        });
    });

ajax_search.php:

include("connect.php");
$eml_search_txt = $_GET['eml_search_txt'];


$output = "";

$output .= "<table class='table table-striped table-inbox eml-overview' >";
$output .= "<thead>";
$output .= "<tr><th>Thead1</th><th>Thead2</th><th>Thead3</th></tr>";
$output .= "</thead>";
$output .= "<tbody>";


$search_query = "SELECT * FROM table_data WHERE data_from LIKE '%".$eml_search_txt."%' OR 
data_sub LIKE '%".$eml_search_txt."%' ORDER BY data_date DESC LIMIT 9 ";
$search_sql = mysqli_query($conn, $search_query);

while($row = mysqli_fetch_assoc($search_sql)) {
    $data_date = date("Y-m-d", strtotime($row['data_date']));
    $uid = $row['uid'];
    $data_from = $row['data_from'];
    $data_sub = $row['data_sub'];

    $output.= "<tr>";
    $output.= "<td>".$data_from."</td>";
    $output.= "<td>".$data_sub."</td>";
    $output.= "<td>".$data_date."</td>";

    $output.= "</tr>";

}

$output .= "</tbody></table>";

$json='{"search_list":"'.$output.'", "getext":"'.$eml_search_txt.'"}';
print $json;

如果我将返回限制为最多9行,则对php文件的此ajax调用可以正常工作,如下所示:

SELECT * FROM table_data WHERE data_from LIKE '%".$eml_search_txt."%' OR 
data_sub LIKE '%".$eml_search_txt."%' ORDER BY data_date DESC LIMIT 9 

但是如果要根据搜索框返回所有行或多于9行 它什么也没给我。

据我了解,如果ajax调用花费很长时间返回数据,则它根本不返回任何内容,例如根据搜索返回数据库中的所有行 需要一些时间。

在这种情况下,有人可以帮助我吗?如何根据搜索结果显示所有结果?

1 个答案:

答案 0 :(得分:0)

您需要优化BD,例如在data_from,data_sub,data_date字段上添加索引。 但是很奇怪,这个选择调用需要很长时间。

您可以将time_limit设置为更大的值。