我试图通过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,因此可能会有一个简单的新手错误。该文件应位于远程服务器上,只需读取访问权限就足以导入。非常感谢!
答案 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。
这意味着:
foo(YOUR_JSON);
application/javascript
内容类型(因此,如果您要提供静态文件,则应使用.js
文件扩展名)如果您使用的是静态文件,那么您将被迫对回调名称进行硬编码(上例中的foo
)。您需要告诉jQuery该回调名称是什么,而不是让它动态生成一个:
jsonp: "foo"
注意:JSONP是解决跨域问题的黑客行为。与使用XMLHttpRequest相比,它施加了很多限制,包括对处理错误可以采取的措施的限制。现在浏览器中对CORS提供了很好的支持,因此不再需要JSONP。如果您没有跨越原点提出请求,那么您不需要这样做。