XML ophalen met jQuery
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function init() {
$.ajax({
url: 'http://'+user+':'+pass+'@'+ip+'/admin/cgi-bin/state.cgi?fav=1',
data: '',
dataType: 'jsonp',
success: function(result) {
alert(result);
},
error: function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
return false;
}
$.ajax({
url: 'http://'+user+':'+pass+'@'+ip+'/admin/cgi-bin/state.cgi?fav=1',
data: '',
dataType: 'jsonp',
success: function(result) {
alert(result);
},
error: function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}
});
return false;
}
Probleem is dat deze manier van werken geen terugkoppeling geeft, alleen de url uitvoert (tenminste daar lijkt het op, want als ik op dezelfde manier de aan/uit functie aanroep, werkt de functie wel. Gezien de aan/uit functie geen output geeft, boeit het ook niet).
Haal ik "dataType: 'jsonp'," weg, dan krijg ik de volgende melding:
"[Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "http://test.vespino.nl/app/freecom/jquery.js Line: 7869"]"
Helaas heb ik hiervoor nog geen oplossing kunnen vinden. Ook heb ik de nodige opties van jQuery (username:password) getest, maar die lijken geen verschil te maken. Standaard krijg ik overigens de volgende output:
"jQuery16203684334675921852_1332458061762 was not called"
Iemand bekend met de fouten en belangrijker mogelijk een oplossing? Het is overigens niet mogelijk om de uitvoer via PHP te laten lopen (laat ik het voor zijn ;)).
Misschien een domme vraag, maar om bij het begin te beginnen: heb je de url die je aan probeert te roepen in de Ajax call al eens direct in de browser geprobeert? Krijg je dan wel een json string te zien?
Gewijzigd op 23/03/2012 08:32:29 door Veur Heur
Dan moet je dus het datatype op 'xml' zetten en niet op 'json'.
Haal ik "dataType: 'jsonp'," weg, dan krijg ik de volgende melding:
"[Exception... "Access to restricted URI denied" code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)" location: "http://test.vespino.nl/app/freecom/jquery.js Line: 7869"]"
Hetzelfde geldt voor wijzigen naar een ander dataType.
Leesvoer over JSONP
Als je echt XML wilt ophalen van die externe locatie; dan zou je in PHP een proxy kunnen maken die met cURL de gegevens 1-op-1 doorgeeft.
Dus: AJAX-call naar /proxy.php en proxy.php met cURL de request naar http://www.extern.nl laten doen.
Opolo Webdesign op 23/03/2012 08:44:13:
Hetzelfde geldt voor wijzigen naar een ander dataType.
Dat stond er in eerste instantie niet bij ;-)
Toevoeging op 23/03/2012 09:27:45:
En dan in aanvulling op wat Elwin zegt: http://www.cypressnorth.com/blog/programming/cross-domain-ajax-request-with-xml-response-for-iefirefoxchrome-safari-jquery/
De oplossing van Erwin ook niet gezien het gaat om een locale device.
Maar ik begrijp niet waarom die php versie niet kan werken. Ik begrijp dat je de data op een mobiel oid nodig hebt, niet op de server. Maar hoe het in dit geval zou werken is dat het device niet een call maakt naar die url in je ajax call nu, maar een call naar een webserver van jou. Die webserver doet zelf niets, maar zet de call feitelijk door naar de echte url via een curl request. De data wordt dan op dezelfde manier terug gerouteerd.
Vanaf je device is het dus exact gelijk, alleen de url is anders. Om eerlijk te zijn begrijp ik niet zo goed waarom dat niet zou kunnen (maar tegelijk besef ik ook dat ik niet alle info heb natuurlijk).
Het kan niet omdat het apparaat lokaal staat. Ik heb bijv. geen toegang tot jouw netwerk toch?
Maar dat is natuurlijk nog maar de theorie....
Het gaat niet om een server, het gaat om een MusicPal.
Gewijzigd op 23/03/2012 11:03:12 door Erwin H
Een MusicPal is (zie mijn originele post) een muziekspeler die je aan je netwerk hangt. Ik heb getest wat je zegt, maar die lopen via een externe website, welke geen toegang hebben tot je locale netwerk.
Zo nee leg je idee dan uit...
Dan kunnen we je misschien helpen.
Ik snap t half:
Je wil muziek van een lokaale mediaspeler op je Telefoon beluisteren?
Het gaat hier zeker om android?
Is er dan geen manier om t in java te schrijf of objectieve C
Misschien niet handig om te reageren op een topic van een jaar geleden?
Dat snap ik maar de titel sprak me aan
Als je nou een leuke oplossing zou delen, maar het enige wat je doet is vragen stellen om verduidelijking, geloof me, of (1) dit idee bestaat of (2) dit is allang opgelost of (3) de TS kan geen verduidelijking meer geven omdat hij er niks vanaf weet