Go Down

Topic: XML per AJAX in HTML einbinden (Read 7389 times) previous topic - next topic

mr_sol

Danke für die Antwort

* Cross-Site-Schutz ausschalten - Wo ist die Einstellung?
* PHP-Script auf dem Server als Umleitung benutzen - Möchte ich vermeiden
* Yahoo YQL als Vermittler benutzen - Möchte ich vermeiden

Besser wäre den Access mitzuliefern - 192.168.0.1 IP des Rechners

Code: [Select]

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4D, 0x97 };
byte ip[] = { 192, 168, 0, 12 };

Server server(80);

void setup()
{
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop()
{
  Client client = server.available();
  if (client) {
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/xml");     
    client.println();
    client.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    client.print("<?access-control allow=\"192.168.0.1\"?>");
    client.print("<node>test</node>");


    delay(10);
    client.stop();
  }   
  delay(30);                           
}



Klappt aber auch nicht -
Status 200 ist OK
XML-Verarbeitungsfehler: Kein Element gefunden Adresse: moz-nullprincipal:{980a6c3a.....

Hat nach jemand eine Idee?

andreasw

Quote
* Cross-Site-Schutz ausschalten - Wo ist die Einstellung?

In den neueren FF Versionen scheint das nur noch per HTTP Access Control zu gehen:
https://developer.mozilla.org/En/HTTP_access_control

Der Header + Daten müsste dann so aussehen:
Code: [Select]

println("HTTP/1.1 200 OK");
println("Access-Control-Allow-Origin: *");
println("Content-Type: application/xml");
println("");
println("[XML Data]");

mr_sol

Super es klappt:

Nochmals vielen Dank an alle.

Hier die komplette Lösung (Arduione+Ethernet) falls jemand XML Daten per Ajax in seine HTML Seite dynamisch einbinden möchte.

Code: [Select]

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x4D, 0x97 };
byte ip[] = { 192, 168, 0, 12 };

Server server(80);

void setup()
{
  Ethernet.begin(mac, ip);
  server.begin();
}

void loop()
{
  Client client = server.available();
  if (client) {
    client.println("HTTP/1.1 200 OK");
    client.println("Access-Control-Allow-Origin: *");   
    client.println("Content-Type: application/xml");
    client.println("");
    client.print("<node>test</node>");


    delay(10);
    client.stop();
  }   
  delay(30);                           
}



HMTL/JS/AXAJ
Code: [Select]

<html>
<body>

<script type="text/javascript">
var xmlhttp;
var xmlDoc;
function callback(xhr)
{
    xmlDoc = xhr.responseXML;
alert(xmlDoc);
}

if (window.XMLHttpRequest)
{
    xmlhttp = new XMLHttpRequest();
}
else
{
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.open("GET", "http://192.168.0.12/", true);

xmlhttp.onreadystatechange = function ()
{
    if (xmlhttp.readyState != 4) return;
    if (xmlhttp.status != 200 && xmlhttp.status != 304) return;

callback(xmlhttp);
};

xmlhttp.send(null);

</script>

</body>
</html>




Der Code liefert in der function callback(xhr) ein xml Object zurück, dieses kann ausgewertet werden. Zu Testzecken FireBUG Netzwerk>alle>GET....>XML aufrufen hier sollte der XML Baum erscheinen.

Go Up