Lo siento por hacer una publicación con un error genérico, ¡pero no puedo entender esto! Tengo una llamada ajax que por ahora envía un objeto vacío y solo devuelve json_encode(array('status' => 'success')); mientras estoy depurando. La llamada ajax está fallando con Error en la llamada ajax. Error: SyntaxError: final inesperado de la entrada JSON
Intenté enviar solo datos ['pid'] = 'csv' en caso de que el json necesitara tener algo, pero sigo recibiendo el mismo error.
Llamada AJAX
function runDataDownload() { var data = {}; // data['rawFiles'] = $('#projectIDs').val(); // data['metadata'] = $('#getData').val(); // data['type']= $('#submitType').val(); // data['pid']='csv'; // data['command']='data/qcTest'; console.log(data); console.log(typeof data) var qcRunId="csv" + Date.now(); var posturl = baseURL + "manage/ajax_runBg/csv/" + qcRunId; $.ajax({type: "POST", url: posturl, data: data, dataType: 'json'}) .done(function(result) { console.log(result); if (result.status==='success'){ // begin checking on progress checkRunStatus(qcRunId, loopIndex); } else if (result.status==='failed'){ $('#' + errorId + ' > li').remove(); $.each(result.errors, function(key, value) { $('#' + errorId).append( "<li>" + value + "</li>" ); }); $('#' + statusId).hide(); $('#' + errorId).show(); } else { $('#' + errorId + ' > li').remove(); $('#' + errorId).append( "<li>Invalid return from ajax call</li>" ); $('#' + errorId).show(); // PTODO - may not be needed // make sure it is visible $('#' + errorId).get(0).scrollIntoView(); } }) .fail(function(jqXHR, status, err) { console.log(jqXHR + status + err); $('#' + errorId + ' > li').remove(); $('#' + errorId).append( `<li>Error in ajax call. Error: ${status} (${err.name}: ${err.message})</li>`); $('#' + errorId).show(); }); }Y mi código php:
public function ajax_runBg($qcName, $runId) { echo json_encode(array('status' => 'success')); }¡Gracias!
Algo parece borrar el búfer de salida de PHP después de llamar a ajax_runBg . Verifique esto agregando ob_flush(); flush(); a ajax_runBg después de la declaración de eco.
Perdón por responder, cuando no tengo una completa, no tengo suficiente reputación para comentar.
Ejecuté este código (eliminé las variables que no tengo) y no obtuve ningún error (no hay nada malo con "echo json_encode(array('status' => 'success'));").
Aquí hay algunas posibles razones por las que falla: Su problema podría ser que el php no hace eco de nada.
Una vez tuve este problema y lo solucioné haciendo primero una variable de json_encode ("cosas para codificar") y luego haciendo eco en esa variable.
¿Hay más en el archivo php que no mostraste? Podría haber un problema si hay otras cosas que se repiten.
Al enviar json, primero debe codificarlo como json, entonces:
$.ajax({type: "POST", url: posturl, data: JSON.stringify(data), dataType: 'json'})