我在 yaler 上创建了一个帐户,以与我的 arduino yun 进行通信。它工作正常,我可以打开和关闭 LED 灯。 然后我创建了一个网页,其中有一个按钮可以通过 GET 方法调用 ajax 函数到 yaler(yaler Web 服务器接受 URL 上的 REST 样式)
$.ajax({
url: "http://RELAY_DOMAIN.try.yaler.net/arduino/digital/13/1",
dataType: "json",
success: function(msg){
var jsonStr = msg;
},
error: function(err){
alert(err.responseText);
}
});
这段代码似乎工作正常,事实上 LED 会关闭和打开,但我期望成功函数(msg)中有一个 json 响应,如下所示:
{
"command":"digital",
"pin":13,
"value":1,
"action":"write"
}
但是我收到错误(错误函数)。我也尝试提醒 err.responseText,但它是未定义的....
我该如何解决这个问题?有什么建议么??? 提前致谢....
最佳答案
如果包含上述 Ajax 请求的网页是从不同的源提供的,则您必须解决 Web 浏览器的同源策略。
有两种方法可以做到这一点(基于 http://forum.arduino.cc/index.php?topic=304804 ):
- CORS ,即将 header
Access-Control-Allow-Origin: *
添加到 Yun Web 服务 - JSONP ,即如果 Ajax 调用通过查询参数
?callback=?
请求,则让 Yun 提供额外的 JS 函数
CORS 可能可以在 Yun 的 OpenWRT 部分中配置,而 JSONP 可以添加到 Brige.ino 代码(您似乎正在使用)中。
关于javascript - 如何从 yaler 获取 json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28777641/