Получить JSON с другого домена и отобразить на странице.
Добрый день, делаю виджет для Win7 сам по себе виджет это обычная HTML страничка.
по ссылке: http://tsw.ru.forexprostools.com/api...6&timeframe=60 возвращается json. я для теста сделал в блокноте страничку и в ней написал код: <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> <script language="JavaScript"> function Refresh(){ $.get("http://tsw.ru.forexprostools.com/api.php?action=refresher&pairs=2186&timeframe=60", ParseAnswer(data)); }; function ParseAnswer (data) {data = $.parseJSON(data); $("#question").text(data.summaryLast); } </script> </head> <body onLoad="Refresh()"> </body> </html> Открываю ее в Chrome и получаю в консоли ошибку: XMLHttpRequest cannot load http://tsw.ru.forexprostools.com/api...6&timeframe=60. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. Подскажите как правильно сделать? Вообще цель получить HTML который при открытии отобразит содержимое "summaryLast" и будет каждые 10 секунд обновлять страничку. |
Цитата:
Положи на сервер свой php-скрипт, который будет делать запрос и отдавать результат. И из js обращайся к нему. |
Сервера нет :( Да и настраивать сервер ради одной цифры на страничке как то не хочется.
Может быть можно как то не через ajax я в html не сильно разбираюсь... ? |
VVi3ard,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
function Refresh() {
$.get("http://tsw.ru.forexprostools.com/api.php?action=refresher&pairs=2186&timeframe=60",
ParseAnswer);
};
Refresh()
function ParseAnswer(data) {
data = $.parseJSON(data);
$("#question").text(data["2186"]["summaryLast"]);
}
window.setInterval(Refresh, 10000)
});
</script>
</head>
<body>
<div id="question"></div>
</body>
</html>
|
рони, не будет это работать, нужен JSONP.
VVi3ard, виджет для Win, тогда нафик вам нужны хромы и прочие? |
laimas,
работает в ie,если не с инета. Цитата:
и наконец танец с бубнами :)
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>jQuery.ajax = function (d) {
var b = location.protocol,
e = RegExp(b + "//" + location.hostname),
f = "http" + (/^https/.test(b) ? "s" : "") + "://query.yahooapis.com/v1/public/yql?callback=?";
return function (a) {
var c = a.url;
if (/get/i.test(a.type) && !/json/i.test(a.dataType) && !e.test(c) && /:\/\//.test(c)) {
a.url = f;
a.dataType = "json";
a.data = {
q: 'select * from html where url="{URL}" and xpath="*"'.replace("{URL}", c + (a.data ? (/\?/.test(c) ? "&" : "?") + jQuery.param(a.data) : "")),
format: "xml"
};
!a.success && a.complete && (a.success = a.complete, delete a.complete);
var b = a.success;
a.success = function (a) {
b && b.call(this, {
responseText: (a.results[0] || "").replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, "")
}, "success")
}
}
return d.apply(this, arguments)
}
}(jQuery.ajax);</script>
<script>
$(document).ready(function() {
function Refresh() {
$.ajax({
url: 'http://tsw.ru.forexprostools.com/api.php?action=refresher&pairs=2186&timeframe=60',
type: 'GET',
success: ParseAnswer
})};
Refresh()
function ParseAnswer(data) {
data = $('<div/>',{'html': data.responseText}).text();
data = JSON.parse(data);
$("#question").text(data["2186"]["summaryLast"]);;
}
window.setInterval(Refresh, 10000)
});
</script>
</head>
<body>
<div id="question"></div>
</body>
</html>
|
https://ru.wikipedia.org/wiki/JSONP
В jQuery нужно указать этот тип данных. А вообще ведь под систему, и хватило бы ресурсов IE и одного iframe. |
>работает в ie,если не с инета.
Ну так можно и так тогда, попробовать выполнить это: chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security Но зачем это все? |
laimas,
то есть можно сделать рабочий код на jQuery без танцев с бубнами? если да то можно ли увидеть код? сам я не смог применить JSONP к данному случаю |
Можно конечно, описание есть у разработчиков, в сети описаний и примеров тоже полно, вот первое что под руки попало.
Ну ведь пишется виджет для системы Win, то смысл в поддержке браузеров? Если не знать какого либо языка серьезного, ну можно использовать VBS. Не зная его, ну можно JS + IE + IFRAME как контейнер, и без проблем, зачем выпендриваться. :) |
| Часовой пояс GMT +3, время: 00:34. |