[英]How to get a json response from yaler
我在 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 頁面是從不同的源提供的,則您必須解決 Web 瀏覽器的相同源策略。
有兩種方法可以做到這一點(基於http://forum.arduino.cc/index.php?topic=304804 ):
CORS 可能可以在 Yun 的 OpenWRT 部分配置,而 JSONP 可以添加到 Brige.ino 代碼(您似乎正在使用)。
我有同樣的問題。 我用 JSONP 來解決它。 JSONP 是帶有填充的 JSON。 基本上意味着您使用某種包裝器發送 JSON 數據。 您必須發送 Java Script 函數而不僅僅是數據,這是互聯網允許的。
所以,而不是你的回應是:
{"command":"digital","pin":13,"value":0,"action":"write"}
它應該是:
showResult({command:"analog",pin:13,value:0,action:"write"});
我改變了 yunYaler.ino 來做到這一點。
所以對於 html :
var url = 'http://try.yaler.net/realy-domain/analog/13/210'; $.ajax({ type: 'GET', url: url, async: false, jsonpCallback: 'showResult', contentType: "application/json", dataType: 'jsonp', success: function(json) { console.dir(json.action); }, error: function(e) { console.log(e.message); } }); }; function showResult(show) { var str = "command = "+show.command;// you can do the others the same way. alert (str); }
我的 JSON 用 showResult() 包裝,因此它制作了 JSONP 以及我在回調中調用的函數。
希望這可以幫助。 如果 CORS 為您工作。 你能不能把它在這里是如何工作的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.