Мой скрипт jquery работает только в Firefox, почему?

0
<!DOCTYPE html>
<html>
  <head>
  <title>test</title>
  <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
  </head>
  <body>
    <div id="div1">dv1</div>
    <div id="div2">dv2</div>


    <script type="text/javascript">
    function getData(){
        $.ajax({
            type:"GET",
            url:"j.json",
            dataType:"json",
            success: function(jsondata){
                output(jsondata);               
            }
        });
    }

    function output(json){

        //var Data = eval('(' + json + ')');
        var html = '';
        //alert(Data.length);
        for(var i=0;i<json.length;i++){
            html += ' name:' + json[i].name + ' age:' + json[i].age;
        }

        document.getElementById('div1').innerHTML = html;
        document.getElementById('div2').innerHTML = json[0].name;
    }

    setTimeout(getData, 3000);      

    </script>

  </body>
 </html>

Файл j.json

[{"name":"aaa","age":18},{"name":"bbb","age":19}]

Целью вышеуказанного кода является обновление содержимого div с данными в локальном json файле. Я пробовал это в IE и Chrome, но не работал. Я много гугл, но все еще не могу понять.

У кого-нибудь есть подсказки? Заранее спасибо.

  • 2
    Вы пробовали проверять вызов AJAX в инструментах разработчика Chrome?
  • 0
    В нем говорится: «Не удалось загрузить ресурс. В запрошенном ресурсе отсутствует заголовок« Access-Control-Allow-Origin ». Поэтому для источника« null »доступ запрещен». & "XMLHttpRequest не может загрузить файл: /// C: /Users/austin/Documents/work/j.json. В запрошенном ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'. Следовательно, источник 'null' отсутствует разрешенный доступ. "
Теги:
cross-browser

1 ответ

3
Лучший ответ

Вы используете веб-сервер?

Вызов AJAX не работает с URL, начинающимся с file://. Это связано с теми же требованиями к происхождению, которые были установлены для помощи в межсайтовом сценарии (XSS). Подробнее см. Здесь.

И, как я заметил, вы должны использовать $(document).ready(function(){ your code }) вместо setTimeout(getData, 3000);

  • 0
    Итак, как бороться с локальным файлом?
  • 0
    Установить веб-сервер :)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню