0

我整天都被困在这上面,getJSON 不起作用,我尝试了很多例子,但它仍然不起作用......任何帮助都会很棒。谢谢!

    console.log("hi");
    $.getJSON("https://pod.cscf.me/conversations/new.json", function(result)
    {
            console.log("workingggggg");
            $.each(result, function(i, person)
            {
                    console.log("itworks2");
            }); 
    }); 

它只输出第一个控制台日志“hi”。

以下是 new.JSON 文件中的代码:

    <script>
      //<![CDATA[
        $(document).ready(function () {
          var data = $.parseJSON( "[{\"value\":\"32\",\"name\":\"R M\"},{\"value\":\"17\",\"name\":\"nirkbirk@pod.cscf.me\"},{\"value\":\"15\",\"name\":\"Henry Hoggard\"},{\"value\":\"26\",\"name\":\"testproto@pod.cscf.me\"}]" ),
              autocompleteInput = $("#contact_autocomplete");

          autocompleteInput.autoSuggest(data, {
            selectedItemProp: "name",
            searchObjProps: "name",
            asHtmlID: "contact_ids",
            retrieveLimit: 10,
            minChars: 1,
            keyDelay: 0,
            startText: '',
            emptyText: 'No Results Found',
            preFill: [{name : "",
                       value : ""}]
            });
          autocompleteInput.focus();
        });
      //]]>
    </script>

我想访问该var data = $.parseJSON etc部分(包含名称和 ID)

4

1 回答 1

2

打开https://pod.cscf.me/conversations/new.json给了我未经授权的响应 401。

那是在确认我要安装证书之后。有一个json响应说我需要登录但是401响应状态头导致请求失败。

另一件事是您不能从站点 A 向站点 B 或从 sub.A.com 到 A.com 或从 A:80.com 到 A:102.com 发送 xhr 请求,除非站点 (pod.cscf.me ) 发送一个 cors 标头。

我正在为 firefox 使用 forcecors 插件,因此可以使用它向其他站点发出请求。

更多关于跨站点脚本和同源策略的信息可以在维基百科上找到,它解释了如何使用 JSONP(与 JSON 不同)和 CORS。

使用您提供的测试帐户登录并在控制台中运行代码后,我明白您的意思,没有错误,但从未调用回调。打开https://pod.cscf.me/conversations/new.json可以看到 url 没有返回 JSON,响应为:

<script>
  //<![CDATA[
    $(document).ready(function () {
      var data = $.parseJSON( "[]" )

这不是 JSON,因此永远不会调用回调,因为将响应转换为 javascript 对象会静默失败。

于 2013-04-27T14:40:31.973 回答