Beginners vraagje

  • Onderwerp starter Onderwerp starter luc99
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

luc99

Gebruiker
Lid geworden
10 nov 2015
Berichten
98
Met volgende Url
Code:
http://192.168.1.61:8090/now_playing
bekom ik volgende resultaat
<nowPlaying deviceID="F0B5D12A25A3" source="STANDBY">
<ContentItem source="STANDBY" isPresetable="false"/>
</nowPlaying>

Het Ip adres dat aangeroepen wordt is van een Bose versterker. Het resultaat dat ik hiermee bekom is de status of de versterker standby staat of niet.
Dit resultaat zou ik graag in een javascript variabele krijgen zodat als de status op STANDBY staat dat ik enkele buttons op mijn layout verberg.

Kan iemand me hiermee op weg helpen ?
 
Bedankt voor de tip, maar dit is hem nog niet.
Bij dit voorbeeld staat er effectief tekst die uit een XML resultaat gehaald wordt, maar in het antwoord dat ik ontvang van de Url zit 'Standby' als parameter tussen de haakjes.
 
Ik heb geprobeerd de nodige aanpassingen voor mij te maken, maar ik krijg geen resultaat hiervan.
Is de verwijzing naar de Url correct ?
Is de verwijzing naar de Tag naam correct en naar het attribuut ?


HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>

<p id="demo"></p>

<script>
   
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "http://192.168.1.61:8090/now_playing", true);
xhttp.send();

function myFunction(xml) {
    var x, i, xmlDoc, txt;
    xmlDoc = xml.responseXML;
    txt = "";
    x = xmlDoc.getElementsByTagName('nowPlaying');
    for (i = 0; i < x.length; i++) { 
        txt += x[i].getAttribute('source') + "<br>";
    }
    document.getElementById("demo").innerHTML = txt; 
}

    </script>
     
</body>
</html>
 
Laatst bewerkt:
Ik weet niet of de URL correct is. Het is in ieder geval een intern netwerkadres.
Kijk eens in de Network-tab van je browser of er een AJAX-request plaatsvindt.
 
En klopt die request ook? En wat staat er in txt en x
Wat alertjes ter debugging kunnen geen kwaad. Kijk ook eens of de loop wordt doorlopen.
 
Ik merk dat aan deze voorwaarde niet voldaan wordt, waardoor myFunction niet uitgevoerd wordt.

Code:
if (this.readyState == 4 && this.status == 200) {
        
        myFunction(this);
        
    }
 
Zeker weten? Want er wordt wel een request uitgevoerd, zei je net nog.
Ik zou eens kijken naar mijn vorige post, en die myFunction() eens debuggen.
 
Als ik een alert plaats in myFunction ter test verschijnt deze niet, waardoor ik kan concluderen dat de functie niet uitgevoerd wordt.
De alert die ik plaats voor de if en ook nog eentje na } van de if worden wel getoond.
Ik merk dat deze 2 verschillende alerts 2 x getoond worden. Ik heb hier ook eens de waarde van this.readyState en this.status in vermeld. De eerste keer is dit 1 voor de readyState en de tweede keer is dit 4. Voor status is het beide keren 0.
 
Ik zie volgende melding bij de tab Console
Access to XMLHttpRequest at 'http://192.168.1.61:8090/now_playing' from origin 'http://192.168.1.250' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value 'http://192.168.1.61' that is not equal to the supplied origin.

Heeft dit er mee te maken ?
 
Het script staat op een Synology Nas in de map voor de webspace
 
Ja, je mag het blijkbaar niet binnenhalen via JavaScript, een header verhindert dat.
Beste oplossing is om met bijv. PHP een proxy te maken, en die feed daarmee in te laden, en uit te lezen.
 
Weet je hier ook een voorbeeldje van dat ik hiervoor kan volgen.
 
Ik heb alvast onderstaande even geprobeerd, maar dit lijkt niet te lukken. Misschien helemaal naast de kwestie.

Code:
<?php

$feedURL = "http://192.168.1.61:8090/now_playing";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $feedURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
$json = curl_exec($ch);

$result = json_decode($json, true);
foreach($result['data']['items'] as $items)
{
    var_dump($items['id']);
}

?>
 
Json decode op XML?

Ik heb enkel gezegd dat je een proxy hoeft maken, niet dat je het verder moet uitlezen met PHP. :)
 
Laatst bewerkt:
Voorlopig nog geen licht in de duisternis. Ik vind van alles op internet maar kan niet onmiddellijk afleiden wat ik juist moet doen.
 
Bestand ophalen en het bestand inladen in AJAX?
Wat je nu te teveel doet is het 'verder uitlezen in PHP'.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan