在javascript

时间:2015-06-10 22:42:00

标签: javascript jquery ajax json

我试图通过javascript访问一个简单的数据文件,并发现它非常困难。它将被放置在远程服务器上,希望可以通过http访问。我是javascript的新手,但是这里是:迄今为止我在JSONP中找到的最佳选项,如https://learn.jquery.com/ajax/working-with-jsonp/所述。

我创建了一个我必须处理的示例数据文件:http://murded.keeleleek.ee/test2.txt

<html>

<head>
    <title>My experiment</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<script type="text/javascript">
    // Using YQL and JSONP
    $.ajax({
        url: "http://murded.keeleleek.ee/test2.txt",

        // The name of the callback parameter, as specified by the YQL service
        //jsonp: "callback",

        // Tell jQuery we're expecting JSONP
        dataType: "jsonp",

        // Tell YQL what we want and that we want JSON
        data: {
            q: "dataprev",
            format: "json"
        },

        // Work with the response
        success: function(response) {
            console.log(response); // server response
        }
    });
</script>

</html>

最终我只想将JSON值用作数组,现在只需将它们打印到控制台或屏幕以确保它们在那里。有人能帮我解决这个问题吗?也许有一种更简单的方法?

不幸的是我不熟悉javascript和JSON,因此可能会有一个简单的新手错误。该文件应位于远程服务器上,只需读取访问权限就足以导入。非常感谢!

2 个答案:

答案 0 :(得分:0)

一个简单的选择是使用$ .getJson

$.getJSON(
        "http://murded.keeleleek.ee/test2.txt",               
           data: {
        q: "dataprev",
        format: "json"
    },
function( response ) {
        console.log( response ); // server response
    }
        )

答案 1 :(得分:0)

如果你的代码,你说:

// Tell jQuery we're expecting JSONP

但您的网址不包含JSONP。它包含纯文本。

要将其作为JSONP处理,您必须将其格式化为JSONP

这意味着:

  • JSON的核心(例如,请参阅http://json.org/
  • 使用JavaScript函数调用:foo(YOUR_JSON);
  • 提供application/javascript内容类型(因此,如果您要提供静态文件,则应使用.js文件扩展名)

如果您使用的是静态文件,那么您将被迫对回调名称进行硬编码(上例中的foo)。您需要告诉jQuery该回调名称是什么,而不是让它动态生成一个:

jsonp: "foo"

注意:JSONP是解决跨域问题的黑客行为。与使用XMLHttpRequest相比,它施加了很多限制,包括对处理错误可以采取的措施的限制。现在浏览器中对CORS提供了很好的支持,因此不再需要JSONP。如果您没有跨越原点提出请求,那么您不需要这样做。