桌面小部件使用的 $.getJSON 不会从浏览器请求 URL

$.getJSON used by desktop widget does not request URL from browser

本文关键字:浏览器 URL 请求 getJSON 小部 桌面      更新时间:2023-09-26

我正在开发一个桌面小部件(在Windows 7中(。我已经创建了一个API(使用PHP(,小部件需要从中请求数据。该 API 采用 JSON 格式,通过在浏览器中键入 URL,我可以获得我需要的数据,即

{"a": "b"}      

我还检查了 http://jsonlint.com 中的 JSON API,这表明 JSON 是正确的。

我用来从URL获取JSON的javascript代码如下:

$.getJSON(url, function(data) {
     ... printings ...
});      

但我没有得到任何结果(而 URL 在键入时显示正确的结果(。当我打开网络选项卡时,我可以看到甚至没有请求 URL!服务器请求不返回任何内容,就像我没有请求 URL 一样。

但是,当我键入不同的URL(不是由我创建的,而是来自我的公司,使用Python(时,小部件会获取数据。我想我的 API 因此有问题,但我无法弄清楚是什么。在创建 API 的 PHP 代码中,我有

<?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> 标记中。