在PHP脚本发送数据之前触发AJAX成功

时间:2018-03-26 17:40:30

标签: php jquery ajax

我知道我错过了什么。我的问题是ajax调用php脚本和php脚本可能需要几秒钟来收集信息。与此同时,触发了成功,让我在JS端没有任何信息。

我有一个$ .ajax如下:

$.ajax({
    url: '/dash/assets/functions/canstat.php',
    type: 'post',
    data: {
        recruiter: r,
        status: s,
        state: st,
        type: t,
        cstart: cdb,
        cend: cde,
        sort: sorto,
        prescreener: p
        },
    success: function(data) {
        try {
            data = $.parseJSON(data);
            $('#cont').html(display(data));
        } catch (e) {
            alert('Query produced results too large for your browser to display.');
        }
    }
});

返回php如下:

    $result=$conn->query($sql);

while($row = $result->fetch_assoc()) {
    $ar[$i]=$row;
    $i++;
}


echo json_encode($ar);

现在有可能查询会很大,但仍需要显示 - 按要求。我确实给出了一个警告,例如phpMyAdmin在点击“全部显示”时给出的,表格可能会使浏览器崩溃。

我试过ob_start(); ob_end_flush()函数;不同的.ini设置。我甚至不知道要搜索什么。

我的系统是Centos 7上的PHP 5.6

我可以生成的所有PHP代码......

    <?php
ob_start();
include_once('../../bs_config.php');
Log::info("REPORTS - Begin");
ini_set("output_buffering","32767");

$search="";
$order = "";

$recruiter=isset($_POST['recruiter'])?$_POST['recruiter']:'0';
$prescreener=isset($_POST['prescreener'])?$_POST['prescreener']:'0';
$status=isset($_POST['status'])?$_POST['status']:'';
$state=isset($_POST['state'])?$_POST['state']:'';
$cstart=isset($_POST['cstart'])?$_POST['cstart']:'';
$cend=isset($_POST['cend'])?$_POST['cend']:'';
$type=isset($_POST['type'])?$_POST['type']:'0';
$sort=isset($_POST['sort'])?$_POST['sort']:'0';


if ($recruiter > "1") {
    $search=($search!="")? $search." owner = '$recruiter' AND" : "WHERE owner = '$recruiter' AND";
} else if ($recruiter=="1") {
    $search=($search!="")? $search." owner NOT IN ('1251','1259','1267', '1264') AND" : "WHERE owner NOT IN ('1251','1259','1267', '1264') AND";
}
if ($prescreener > "1") {
    $search=($search!="")? $search." PreScreener = '$prescreener' AND" : "WHERE PreScreener = '$prescreener' AND";
} else if ($prescreener=="1") {
    $search=($search!="")? $search." PreScreener NOT IN ('Woodley, Gary','Follett, Bailey','') AND" : "WHERE PreScreener NOT IN ('Woodley, Gary','Follett, Bailey','') AND";
}
if ($status!="0") {
    $search=($search!="")? $search." Status = '$status' AND" : "WHERE Status = '$status' AND";
}
if ($type!="0") {
    switch ($type) {
        case "1": $cos="Attorney"; break;
        case "2": $cos="Legacy"; break;
        case "3": $cos="Alliance America"; break;
        case "4": $cos="IASAR"; break;
    }
    $search=($search!="")? $search." company = '$cos' AND" : "WHERE company = '$cos' AND";
}
if ($state!="") {
    $state="'".$state."'";
    if (strpos($state,',')) {
        $state=str_replace(",","','",$state);
    }
    $search=($search!="")? $search." state IN ($state) AND" : "WHERE state IN ($state) AND";
}
// reset if opposite
if ($cend < $cstart) {
    $cend="";
    $cstart="";
}
if ($cend == "" && $cstart !="") {
    $search=($search!="")? $search." date_created > '$cstart' AND" : "WHERE date_created > '$cstart' AND";
}
if ($cend != "" && $cstart =="") {
    $search=($search!="")? $search." date_created < '$cend' AND" : "WHERE date_created < '$cend' AND";
}
if ($cend != "" && $cstart !="") {
    $search=($search!="")? $search." (date_created BETWEEN '$cstart' AND '$cend') AND" : "WHERE (date_created BETWEEN '$cstart' AND '$cend') AND";
}

Log::info("Date Begin: ".$cstart);
Log::info("Date End: ".$cend);


// Clean last AND
$search = rtrim($search,' AND');
Log::info("REPORTS: Sort on:".$sort);
// Handle Sorting
switch ($sort) {
    case "1":
        $order = "ORDER BY last_name ASC";
        break;
    case "2":
        $order = "ORDER BY last_name DESC";
        break;
    case "3":
        $order = "ORDER BY first_name ASC";
        break;
    case "4":
        $order = "ORDER BY first_name DESC";
        break;
    case "5":
        $order = "ORDER BY state ASC";
        break;
    case "6":
        $order = "ORDER BY state DESC";
        break;
    case "7":
        $order = "ORDER BY date_created ASC";
        break;
    case "8":
        $order = "ORDER BY date_created DESC";
        break;
    case "9":
        $order = "ORDER BY date_modified ASC";
        break;
    case "10":
        $order = "ORDER BY date_modified DESC";
        break;
    case "11":
        $order = "ORDER BY Status ASC";
        break;
    case "12":
        $order = "ORDER BY Status DESC";
        break;
    case "13":
        $order = "ORDER BY company ASC";
        break;
    case "14":
        $order = "ORDER BY company DESC";
        break;
    case "15":
        $order = "ORDER BY PreScreener ASC";
        break;
    case "16":
        $order = "ORDER BY PreScreener DESC";
        break;
}

// reduce the number of columns to conserve memory
$cols = "candidate_id, last_name, first_name, city, state, zip, Status, owner, date_created, date_modified, company, PreScreener";
$ar = [];
$i=0;
$sql="SELECT $cols FROM candidate ".$search." ".$order;

Log::info("REPORTS - ".$sql);

$result=$conn->query($sql);

while($row = $result->fetch_assoc()) {
    $ar[$i]=$row;
    Log::dump($i,$row);
    $i++;
}


echo json_encode($ar);
ob_end_flush();
?>

0 个答案:

没有答案