JSONP es la forma de implementar llamados AJAX Cross Domain:
Referencias:
http://api.jquery.com/jQuery.ajax/
http://json-p.org/
http://www.funcion13.com/2012/04/12/como-realizar-peticiones-ajax-cross-domain-jsonp-jquery/
Test.php:
<html>
<head>
<script type="text/javascript" src="js/jquery-1.8.2.js"></script>
<script type="text/javascript" src="js/funciones.js"></script>
</head>
<body>
<input id="detectar" type="button" value="Detectar...">
</body>
<script>
$(document).ready(function() {
$("#detectar").click(function() {
invocarAjax();
});
});
</script>
</html>
funciones.js
function arduinoEthernetComCallback(data)
{
alert("data es!!: " + data);
var j = eval('(' + data + ')');
alert(j["A5"]);
}
function invocarAjax()
{
rnd = '&random=' + Math.floor(Math.random()*9999999999);
$.ajax({
url : 'http://192.168.0.200:93?rnd='+rnd,
dataType : 'jsonp',
crossDomain : true
});
}
Sketch:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,200);
char callback[27] = "arduinoEthernetComCallback";
EthernetServer server(93);
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: application/json");
client.println("Connection: close");
client.println();
client.print(callback);
client.print("('{");
for (int i=0; i<6; i++) {
client.print("\"A");
client.print(i);
client.print("\": ");
client.print(i*10);
if (i != 5) {
client.print(",");
}
}
client.println("}')");
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
No hay comentarios:
Publicar un comentario