Ho un problema con la mia richiesta JSONP .. non verranno visualizzati I dati, Firebug mostra un errore di "Etichetta non valido" .."etichetta non valida" quando si utilizza JSONP?
mio JavaScript:
$.ajax({
url: link,
dataType: "jsonp",
beforeSend: function(xhr) {
var base64 = btoa(username + ":" + password);
xhr.setRequestHeader("Authorization", "Basic" + base64);
xhr.overrideMimeType("application/json");
},
jsonpCallback: "getResources"
})
function getResources(data) {
alert(data);
alert(JSON.parse(data));
$.each(data.groupStatus, function(i, item) {
$("body").append("<p>ID: " + item.id + "</p>");
});
}
mio JSON:
{
"groupStatus": [
{
"id": "Application Layer Configuration-ApplicationLayer",
"time": 1332755316976,
"level": 0,
"warningIds": [],
"errorIds": []
},
{
"id": "Application Layer-ApplicationLayer:nscalealinst2",
"time": 1333431531046,
"level": 0,
"warningIds": [],
"errorIds": []
}
]
}
mio HTML:
<html>
<head>
<title>Monitor</title>
<link href="css/gadget.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
</head>
<body>
<div id="content"></div>
<script type="text/javascript" src="js/gadget.js"></script>
</body>
La richiesta funziona bene, ma in ogni caso non vengono visualizzati i dati.
Im alla ricerca di una soluzione per giorni .. Qualcuno può aiutarmi? Grazie in anticipo!
SOLUZIONE (aggiornamento: 06.09.12)
Ho risolto questo problema. Il server (interfaccia REST) su cui è stato eseguito l'aveva alcuna funzione di callback implementato .. Un altro modo per impostare richieste crossdomain SENZA usando JSONP è quello di impostare la seguente variabile jquery:
jQuery.support.cors = true;
Questo perché JSON * non * è un programma di JS valido, ma si sta cercando di essere utilizzato come uno. Scopri perché JSONP non funziona come previsto. (btw, 'getRessources' sembra un errore ortografico.) –
la richiesta funziona correttamente ..ho aggiunto un'immagine con la risposta .. – P4tR
La risposta non è JSONP, è JSON. Le risposte JSONP devono essere racchiuse all'interno di una chiamata di funzione come 'callback ({" foo ":" bar "})' –