2013-08-21 3 views
2

Я пытался найти код для достижения своей цели, но я еще не нашел решение.Получить массив JSON с HTTP Получить с помощью javascript (jquery)

Цель: Я должен получить массив объектов JSON из сети (через URL) с использованием метода GET. Я должен сделать это в Javascript или HTML. Я пытался в javascript с jquery и с ajax. Идея заключается в том, когда на веб-странице я делаю нагрузки, я должен получить массив объектов JSON. Я хотел бы сохранить массив объектов JSON objets, извлеченный в строку, чтобы манипулировать им.

Пример JSON массив, который я должен получить от http://www.example.com/example

[ 
    { 
     "type": "1", 
     "id": "50a92047a88d8", 
     "title": "Real Madrid" 
    }, 
    { 
     "type": "1", 
     "id": "500cbb1a5ef23", 
     "title": "Fernando Alonso" 
    } 
] 

Когда я запускаю мой код в браузере я всегда получить никакого ответа.

Вот некоторые фрагменты кода, которые я пробовал:

HTML код

<html> 
<head> 
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
    <script src="http://code.jquery.com/ui/1.8.23/jquery-ui.min.js"></script> 
    <script type="text/javascript" src="script.js"></script> 
    <link type = "text/css" rel = "stylesheet" href = "stylesheet.css"/> 
</head> 
<body onload = "httpGet('http://www.example.com/example')"> 
</body> 
</html> 

код Javascript

function httpGet(theUrl) 
{ 
$.getJSON(theUrl, function(data) 
{ 
    $.each(data, function() 
    { 
     console.log(this['title']); 
    }) 
}); 
} 

Другие Javascript код

$.ajax(
{ 
    url: theUrl, 
    type: 'GET', 
    dataType: 'json', 
    accept: 'application/json', 
    success: function(data) 
    { 
     console.log(data); 
     var objets= $.parseJSON(data); 

     $.each(objets, function(i, obj) 
     { 
      console.log(obj.title); 
     }); 
    } 
}); 

И у меня есть доказать lo t кода отсюда (переполнение стака) ...

Большое спасибо и извините за мой английский.

Edit:

Некоторое время назад я пытался с stringify, но я не знал, как можно это работает. я доказал следующее:

function httpGet(theUrl) 
{ 
    var xmlHttp = null; 
    xmlHttp = new XMLHttpRequest(); 
    xmlHttp.open("GET", theUrl, true); // I tried with true and with false 
    xmlHttp.send(); 
    var answer= xmlHttp.responseText; 
    var str = JSON.stringify(answer); 
    console.log(str); 
    var jsonResponse = JSON.parse(str); 
    console.log(jsonResponse); 
} 
+0

заданный URL указывает на домен _your_, то есть тот же домен ваша страница загружается из? Стандартный запрос ajax (для JSON или любого другого формата) не будет работать в междоменном режиме. – nnnnnn

+0

use stringify для этого –

+1

Так что же такое «данные» после успеха? Он когда-либо ударил «успех». Возможно, вместо этого он «ошибается». Вы пытались добавить обратный вызов для этого и посмотреть, что происходит? Кроме того, проверка вашей вкладки «Сеть» в «Инспекторе Chrome/Firefox» обычно также полезна для этого. – Bartek

ответ

-1

Вы не можете получить данные кросс домена с JavaScript, вы должны поместить данные на вашем домене или использовать JSONP, чтобы получить его, или просто распечатать его на этой странице.

+0

Я думаю, вы меня не поняли, или я не объяснил себя хорошо, или и то, и другое. Я хочу сохранить в переменной массив объектов JSON, полученный с помощью вызова GET. – Fer7

+0

, если адрес GET-адреса не является тем же доменом, что и ваш скрипт, ваш вызов не будет выполнен, и ответа нет. просто проверьте это [ссылка] (http://www.w3.org/TR/access-control/) – Lookis

+0

Затем, какого черта я должен делать? С jsoup можно это сделать? – Fer7

-1

Я нашел решение моей проблемы с одной строки кода PHP

<?php 
    echo file_get_contents("http://www.example.com/example"); 
?> 

После этого мне нужно ссылаться на файл PHP в файла JavaScript. Наконец, я смог получить доступ к парам ключ-значение массива объектов JSON.

function httpGet() 
{  
    $.getJSON('phpfile.php', function(data) 
    { 
     $.each(data, function(i, obj) 
     { 
      console.log("object: " + i + ", title: " + obj.title); 
     }); 
    }); 
} 

В HTML файл я изменял следующую строку:

<body onload = "httpGet()"> 
Смежные вопросы