Я разрабатываю виджет рабочего стола (в Windows 7). Я создал API (используя PHP), из которого виджет должен запрашивать данные. API представлен в формате JSON, и, набрав URL в браузере, я получаю необходимые данные, которые
{"a": "b"}
Я также проверил JSON API в http://jsonlint.com который показывает, что JSON является правильным.
Javascript-код, который я использую для получения JSON по URL-адресу, следующий:
$.getJSON(url, function(data) {
... printings ...
});
но я не получаю никаких результатов (в то время как URL показывает правильные результаты при его наборе). Открывая вкладку «Сеть», я вижу, что URL даже не запрашивается! Запрос к серверу ничего не возвращает, как будто я не запрашивал URL.
Однако, когда я набираю другой URL (не созданный мной, а из моей компании, использующей Python), виджет получает данные. Я полагаю, что с моим API что-то не так, но я не могу понять, что именно. В PHP-коде создания API у меня есть
<?php
....
$str = 'b';
....
$results = array();
$results['a'] = $str;
$encoded = json_encode($results);
echo $encoded;
return $encoded;
?>
и я получаю JSON, который я показываю выше. Есть идеи?
должно быть, очевидно, что-то не так с частью JavaScript. и я не знаю, что вы подразумеваете под Виджет рабочего стола.
Ваш Javascript не выводит ничего из вашего ответа JSON. давайте изменим это печатая data.a
, которая должна быть переменной вашего ответа:
$.getJSON(url, function(data) {
output+= "<p> my JSON response: " + data.a + " </p>";
document.getElementById('demo').innerHTML = output;
//whenDone (output);
});
честно говоря, я не понимаю, чего вы пытаетесь достичь whenDone(output)
, это функция написана вами?
ты понимаешь что $.getJSON()
является функцией jQuery, поэтому убедитесь, что вы включили jQuery в свой код. а также убедитесь, что ваш скрипт находится в <script></script>
теги.
Других решений пока нет …