Вопрос по jquery, json – доступ к JSON на внешнем сервере

1

У меня есть внешний URL-адрес JSON.

http://kun6858.iptime.org:8080/apps/list/?app_mb_no=9

И я получаю доступ к этому json с помощью jquery $ .getJSON (..)

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script>
$.getJSON(
    "http://kun6858.iptime.org:8080/apps/list/?jsoncallback=?",
    {
        app_mb_no : 9
    },
    function(data) {
        console.log(data);
    }
);
</script>
</body>
</html>

Но я не могу получить доступ к JSON, используя приведенный выше источник.

Я понятия не имею, как получить доступ к json внешнего сервера. У моего источника есть проблема? или JSON?


для справки, это скриншот ..

enter image description here

Это был секрет Jquery AJAX ..stackoverflow.com/questions/7936610/… Patrick Jeon

Ваш Ответ

3   ответа
0

Три очка:

  1. Doesn't app_mb_no need value in your ajax call? e.g. app_mb_no : 9
  2. You can use the .ajax equivalent: $.ajax({ url: url, dataType: 'json', data: data, success: callback });
  3. Have you run your code under a web server? You need to do this.
Я использую Chrome, и он дает мне "Uncaught SyntaxError: Неожиданный токен: & quot;" Patrick Jeon
перейти на консоль javascript, имеет ли она что-то связанное с междоменными вещами?
Проверьте код JS с помощью инструмента разработчика Chrome на наличие синтаксических ошибок. Хром выделит их.
Я попробовал это на моем собственном сервере после вашего ответа. но то же самое произошло .. и изменил app_mb_no: 9 Patrick Jeon
Я считаю, что у JSON нет проблем. Patrick Jeon
0

Я не знаю точно, как это работает, но это решило мою проблему.

Добавление этого в ServletResponse

    response.setHeader("Access-Control-Allow-Origin", "*");
    response.setContentType("Content-Type:application/json;charset=UTF-8");

И HTML

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script>
var url = "http://localhost:8080/apps/list/?app_mb_no=9";


if ($.browser.msie && window.XDomainRequest) {
    // Use Microsoft XDR
    var xdr = new XDomainRequest();
    xdr.open("get", url);
    xdr.onload = function () {
    var JSON = $.parseJSON(xdr.responseText);
    if (JSON == null || typeof (JSON) == 'undefined')
    {
        JSON = $.parseJSON(data.firstChild.textContent);
    }
    processData(JSON);
    };
    xdr.send();
} else {
          $.ajax({
          type: 'GET',
          url: url,
          processData: true,
          data: {},
          dataType: "json",
          success: function (data) { processData(data); }
          });
}

function processData(data) {
    console.log(data);  
}
</script>
</body>
</html>

Если кто-нибудь знает лучший способ, пожалуйста, научите меня! Спасибо

протестирован в IE8, но не работает Patrick Jeon
Для себя,stackoverflow.com/questions/7936610/… Patrick Jeon
0

Вам нужно использовать JSONP для междоменного доступа. Поэтому вы должны изменить свой вызов AJAX.

Хорошее объяснение этого сценария здесь:

http://www.jquery4u.com/json/jsonp-examples/

Привет, Патрик, ваша серверная аппликация поддерживает jsonp? Как видно из примера, вам нужно обернуть ваш ответ jsonp в функцию jsoncallback. С наилучшими пожеланиями, Монси
пробовал с (function ($) {var url = & apos;kun6858.iptime.org:8080/apps/list& APOS ;; $ .ajax ({тип: & gt; GET & reg ;, url: url, async: false, contentType: & quot; application / json & quot ;, dataType: & amp; jsonp & amp ;, data: {app_mb_no: 9}}); }) (Jquery); это но то же самое ... Patrick Jeon

Похожие вопросы