Ajax有时无法解析大型JSON响应

时间:2019-03-14 08:26:55

标签: php jquery mysql ajax

我正在使用以下ajax代码调用PHP服务:

    jQuery.ajax({
    url: 'index.php?option=com_sheet&task=getReportsData',
    timeout: 300000,
    dataType: "json",
    type: "GET",
    data: {        
        'project': projectsStr,
        'startweek': startweek,
        'endweek': endweek        
    }
}).done(function(response) {    
    if (response.success && response.data) {
        var projectData = response.data;
        if (projectData.projectReportData.length > 0) {
            loadDataTable(response.data);
        } else {
            jQuery('#projectReportData').html("<br/><h2>No Matching Results</h2>");
        }
    }
}).fail(function(jqXHR, textStatus) {
    jQuery(".overlay")[0].style.display = '';
    if (textStatus === 'timeout') {
        alert('Failed from timeout');        
    }
    alert(textStatus);
});

提供响应的php代码将响应打印为:

$data = (object)array_merge(['projectReportData' => $projectReportData]);
header("Content-Type: application/json");
$post_data = json_encode($data, JSON_FORCE_OBJECT);
ob_start('ob_gzhandler');   
echo new JResponseJson($data);
ob_end_flush();
jexit();

此Ajax有时可以正常工作,并且能够解析JSON。但是大多数时候会出现“ parsererror”。 下面的代码从数据库中获取数据:

$db = JFactory::getDbo();
  $query = "CALL getReportData('" . $startweek . "','" . $endweek . "')";
  $db->setQuery($query);     
  $res = $db->query($query);
  $returnArr = [];
  $i = 0;
  while( $r = $res->fetch_assoc()){
    $projectReportData[$i] = $r;
    $i++;

  }

当我将dataType更改为text时,指针到达.done(),但是console.log(response)返回一个空白。

0 个答案:

没有答案