$ .getJSON不起作用

时间:2013-04-27 14:30:22

标签: javascript json getjson

我一直被困在这一整天,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)

1 个答案:

答案 0 :(得分:2)

打开https://pod.cscf.me/conversations/new.json会给我未经授权的回复401。

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

另一件事是,您不能将站点A的xhr请求发送到站点B或从sub.A.com发送到A.com或从A:80.com发送到A:102.com,除非该站点(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对象会无声地失败。