2015-02-01 3 views
-3

Так что я сделал файл index.php с тем же кодом, что и w3schools example, и его не работает, но он работает, когда я использую пример w3schools в tryit! Пожалуйста помоги.javascript/jquery getJSON не работает

Вот код:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 
     $.getJSON("http://www.w3schools.com/jquery/demo_ajax_json.js", function(result){ 
      $.each(result, function(i, field){ 
       $("div").append(field + " "); 
      }); 
     }); 
    }); 
}); 
</script> 
</head> 
<body> 

<button>Get JSON data</button> 

<div></div> 

</body> 
</html> 

ответ

1

Same-origin policy не позволяет отправить запрос Ajax на внешний ресурс:

В вычислениях, политика общего происхождения является важным понятием в модели безопасности веб-приложений. Эта политика позволяет использовать сценарии, выполняемые на страницах, происходящих из одного и того же сайта - комбинацию схемы, имени хоста и номера порта, для доступа к DOM друг другу без каких-либо конкретных ограничений, но предотвращает доступ к DOM на разных сайтах. Политика одного и того же происхождения также применяется к XMLHttpRequests, если только сервер не предоставляет заголовок Access-Control-Allow-Origin (CORS). Примечательно, что WebSockets не подпадают под действие политики одного и того же происхождения.

0

Я думаю, что @Vohuman прав, но если вы используете php, вы можете сделать обходное решение, используя функцию php curl. Вы можете создать локальный файл php, как показано ниже, и вызвать его в js как источник json.

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.w3schools.com/jquery/demo_ajax_json.js"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
$data = curl_exec($ch); 
curl_close($ch); 

echo $data; 
Смежные вопросы