#php #jquery #mysql #ajax
#php #jquery #mysql #ajax
Вопрос:
Я вызываю службу PHP с приведенным ниже кодом ajax :
jQuery.ajax({
url: 'index.php?option=com_sheetamp;task=getReportsData',
timeout: 300000,
dataType: "json",
type: "GET",
data: {
'project': projectsStr,
'startweek': startweek,
'endweek': endweek
}
}).done(function(response) {
if (response.success amp;amp; 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)
возвращает пробел.
Комментарии:
1. можете ли вы распечатать код, который вы используете для извлечения данных, предоставленных из jquery
2. Вы должны быть в состоянии извлечь json (строку), когда она выдает эту ошибку, а затем поместить ее в анализатор json (например jsonlint.com ), чтобы увидеть, в чем проблема.
3. @MohammedYassineCHABLI, это уже упоминалось в вопросе. вам нужно что-нибудь еще?
4. Браузеры действительно не предназначены для OLAP — вам, вероятно, следует пересмотреть свой дизайн — возможно, сгенерировать / обобщить отчет на стороне сервера
5. @SalilLambay Откройте свою консоль и проверьте, в чем проблема, или перехватите вашу ошибку в методе fail.