2016-02-15 5 views
-2

Я пытаюсь отобразить информацию из внешнего API here с использованием JSON. У меня есть файл default.asp. Внутри у меня есть HTML и сценарий с помощью этой функции:Получить данные из API с помощью JSON

$.ajax({ 
    url: 'http://zipitprod.com.leaf.arvixe.com/api/event?$orderby=StartDateUTC,+Distance&$top=50&day=7&dist=100&lat=40.1273&long=-82.9182', 
    type: 'GET', 
    dataType: 'JSON', 
    success: function (response) { 
     alert("Success: "+response.responseText);      
    }, 
    error: function (jqXHR, exception) { 
      var msg = ''; 
      if (jqXHR.status === 0) { 
       msg = 'Did not connect.\n Verify Network.'; 
      } else if (jqXHR.status == 404) { 
       msg = 'Requested page not found. [404]'; 
      } else if (jqXHR.status == 500) { 
       msg = 'Internal Server Error [500].'; 
      } else if (exception === 'parsererror') { 
       msg = 'Requested JSON parse failed.'; 
      } else if (exception === 'timeout') { 
       msg = 'Time out error.'; 
      } else if (exception === 'abort') { 
       msg = 'Ajax request aborted.'; 
      } else { 
       msg = 'Uncaught Error.\n' + jqXHR.responseText; 
      } 
       alert("Error: "+msg); 
      }, 
     }); 

По какой-то причине, я получаю код состояния 0. Должен ли я не использовать JSON/AJAX или там что-то не так с моей функции? У меня есть googled для кода состояния 0, и я понимаю, что он может терпеть неудачу с опечатками или недоступными DNS. Он должен быть общедоступным, и я использую приложение Postman, чтобы помочь тестировать, и он работает там.

+2

Откройте консоль Javascript браузера, посмотрите сообщение об ошибке и найдите его в Google. В принципе, вы не можете вызывать API из браузера из-за политики одного и того же происхождения. – JJJ

ответ

0

Ваши API вызовы не удается из-за Same Origin Policy, это мера безопасности, чтобы остановить вредоносные скрипты, делать неприятные вещи, такие, как угон ваши сеансы на других сайтах (см XSS и CSRF).

Вы все еще можете получить данные из запрашиваемого источника, однако вам придется сделать это на стороне сервера и разрешить пользователю запрашивать его у вашего хоста.


Side Примечание: Вы запрашиваете XML от API позвонить вы делаете, JSON формат, который использует фигурные скобки как яваскрипт объектов сделать так: {"key":"value"}(отсюда и название JavaScript нотации Object)

+0

Итак, я прочитал, что вам нужно добавить заголовок «Access-Control-Allow-Origin», но я не могу найти, как это сделать с моим файлом default.asp. В любое время, когда я пытаюсь сделать это, я получаю сообщение «Произошла ошибка на сервере при обработке URL». – Scott

Смежные вопросы