javascript - leer - json php ejemplo
Llamada AJAX y limpieza JSON pero Error de sintaxis: falta; declaraciĆ³n anterior (6)
Estoy haciendo una llamada JSONP de dominio cruzado usando este código:
jQuery.ajax({
async: true,
url: ''http://mnews.hostoi.com/test.json'',
dataType: ''jsonp'',
method: "GET",
error: function (jqXHR, textStatus, errorThrown) {
console.log(textStatus + '': '' + errorThrown);
},
success: function (data, textStatus, jqXHR) {
if (data.Error || data.Response) {
exists = 0;
}
}
});
Al depurar en Firebug, aparece el siguiente error:
SyntaxError: missing ; before statement
Sin embargo, cuando paso mi objeto json (disponible a través del enlace en el código JQ) a través de una herramienta como jsonlint.com, dice que es JSON válido. Y tampoco encuentro ninguna anomalía. ¿Cómo podría estar devolviendo un error de sintaxis? ¿Es algún detalle de JSONP que no estoy obteniendo o qué?
Muestra de JSON
{"news":[ {
"sentences": [
"Neuroscientists have discovered abnormal neural activity...",
"The researchers found that these mice showed many symptoms...",
"/"Therefore,/" the study authors say, /"our findings provide a novel.."
],
"summaryId": "ZJEmY5",
"title": "Abnormal neural activity linked to schizophrenia"
}]}
Gracias por adelantado.
Aquí está el ejemplo de trabajo
$.ajax({
type: ''GET'',
url: ''http://xxx.amazonaws.com/file.json'',
dataType: ''jsonp'',
jsonpCallback: ''callback'',
success: function(json){
console.log(json);
}
});
Y deberías poner la callback
de callback
al principio de tu file.json
. file.json
como:
callback({"item":{".......
Como señaló epascarello, la respuesta JSONP debe enviarse como:
callBackFunction({ JSON Object })
Y la función de llamada se puede configurar como:
var url = "http://someremoteurl.com/json";
$.getJSON(url + "?callback=?", null, function(data) {
callBackFunction(data);
});
Luego puede recorrer los datos de respuesta como:
function callBackFunction(data)
{
console.log(data);
}
El error es porque devuelve JSON no JSONP.
Se supone que JSONP debe verse como
someCallBackString({ The Object });
JSONP no es JSON. Una respuesta JSONP consistiría en un script de JavaScript que contiene solo una llamada de función (a una función predefinida) con un argumento (que es un objeto de JavaScript literal conforme a la sintaxis JSON).
La respuesta que recibe es JSON, no JSONP, por lo que fallan sus esfuerzos para manejarlo como JSONP.
Cambie dataType: ''jsonp''
a dataType: ''json''
(o elimine la línea por completo, el servidor emite el tipo de contenido correcto para que no tenga que anularlo).
Como el script se ejecuta en un origen diferente al JSON, también deberá realizar algunos pasos (la mayoría, pero no todos, de los cuales requieren que controle el host que sirve el JSON) para evitar la misma política de origen .
Si la pregunta está relacionada con Ruby, entonces en su controlador asegúrese de representar el formato correctamente. ejemplo:
def view_product
data = Product.find params[:id]
render :json => data, :callback => params[:callback]
end
En su método de renderizado, debe tener el parámetro de devolución de llamada; de lo contrario, se representará en json en lugar de jsonp.
Si usa el parámetro " callback =? ", Su respuesta en el servidor debería verse así:
$_callback = $_GET[''callback''];
echo $_callback . ''('' . json_encode(YOUR_VARIABLE) . '');'';
Si el parámetro " callback =? " No está definido, su respuesta debería verse así:
echo ''['' . json_encode($_return_array) . '']'';