如何使用Jquery和ajax从JSON文件检索数据?
今天发生了一件奇怪的事情:我试图使用jquery和ajax从JSON文件中检索一些数据,并将这些数据显示在网页上。我在互联网上找到的这个例子在基本操作系统上对我有用。当我尝试从带有Win10操作系统的虚拟机上运行它时,它不工作,这意味着它会使我陷入:如何使用Jquery和ajax从JSON文件检索数据?,jquery,json,ajax,Jquery,Json,Ajax,今天发生了一件奇怪的事情:我试图使用jquery和ajax从JSON文件中检索一些数据,并将这些数据显示在网页上。我在互联网上找到的这个例子在基本操作系统上对我有用。当我尝试从带有Win10操作系统的虚拟机上运行它时,它不工作,这意味着它会使我陷入:alert('服务器出现问题。请稍后重试!')。为什么? 非常感谢 这在我的data19.json文件中: { "one": "Learned Optimism", "two": "Deliberate Practice", "thre
alert('服务器出现问题。请稍后重试!')代码>。为什么?
非常感谢
这在我的data19.json文件中:
{
"one": "Learned Optimism",
"two": "Deliberate Practice",
"three": "Getting Things Done"
}
我的脚本script19.js是:
$(function() {
$('#clickme').click(function() {
$.ajax({
url: 'data19.json',
dataType: 'json',
success: function(data) {
var items = [];
$.each(data, function(key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ul/>', {
'class': 'interest-list',
html: items.join('')
}).appendTo('body');
},
statusCode: {
404: function() {
alert('There was a problem with the server. Try again soon!');
}
}
});
});
});
$(函数(){
$('#clickme')。单击(函数(){
$.ajax({
url:'data19.json',
数据类型:“json”,
成功:功能(数据){
var项目=[];
$。每个(数据、函数(键、值){
items.push(““+val+” ”);
});
$(“
”{
“类”:“兴趣列表”,
html:items.join(“”)
}).附于(“主体”);
},
状态代码:{
404:函数(){
警报('服务器出现问题。请稍后重试!');
}
}
});
});
});
我的HTML文件是:
<!DOCTYPE html>
<html>
<head>
<title>19. Using jQuery to retrieve JSON via AJAX</title>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="script19.js"></script>
</head>
<body>
<h1 id="title">19. Using jQuery to retrieve JSON via AJAX</h1>
<a href="#" id="clickme">Get JSON Data</a>
</body>
</html>
19使用jQuery通过AJAX检索JSON
19使用jQuery通过AJAX检索JSON
另外,当我单击“获取JSON数据”时,控制台中会显示以下内容:
您的代码是正确的,您必须将代码移动到服务器,在服务器上您的ajax调用json,一切都将正常工作。您可以检查您的json源是否需要internet连接,如果是,则您的VM必须具有internet连接
> Edit: Work around to read local JSON external file.
> 1. Create data.json file
> 2. Copy data into this file, for example:
> data = '[{"Id" : "1", "name" : "abc"},{"id" : "2", "name" : "xyz"}]';
> 3. Include path for this file as reference: <script type="text/javascript" src="data.json"></script>
> 4. Read JSON data by: var jsonData = JSON.parse(data);
>Edit:解决读取本地JSON外部文件的问题。
> 1. 创建data.json文件
> 2. 将数据复制到此文件中,例如:
>数据='[{“Id”:“1”,“name”:“abc”},{“Id”:“2”,“name”:“xyz”}]';
> 3. 包含此文件的路径作为参考:
> 4. 读取JSON数据:var jsonData=JSON.parse(数据);
您提供的json数据(数据变量内部)不是一个数组,而是一个具有属性名称和值的单个对象。所以不要在它们之间循环。而是通过这些属性进行循环,并使用该属性访问值
items=[];
for(r in data)
{
var key =r;
var val=data[r];
items.push('<li id="' + key + '">' + val + '</li>');
}
console.log(items);
items=[];
for(数据中的r)
{
var-key=r;
var val=数据[r];
items.push(““+val+” ”);
}
控制台日志(项目);
工作样本我认为这将解决问题。我自己试过,你可以用
如何使用Jquery和ajax从JSON文件检索数据?
----------
//一次加载6个项目的脚本
var j=0;//对象中开始加载的索引
变量扩展数据//用于从函数内部访问它的全局变量。它将加载该文件,并且不希望每次都读取该文件
//通过Ajax将JSON文件加载到对象
var xreq=newXMLHttpRequest();
open('GET','file.json');
xreq.onload=函数(){
//打开文件后,在加载文件时将其从文本转换为对象
xdata=JSON.parse(xreq.responseText);
//调用function以生成页面
addHtml(扩展数据,j);
//在索引中添加了6,以便从下一个项目开始加载
j=j+6;
};
//发送ajax
xreq.send();
//当页面准备就绪且已滚动访问结束页面时,再次调用构建功能
$(文档).ready(函数(){
$(窗口)。滚动(函数(){
//获取滚动位置
var scrollPosition=$(window.scrollTop();
//1.2中的乘法运算,以便在到达页面末尾之前调用该函数20%
如果(滚动位置>=$(文档).height()-($(窗口).height())*1.2&&j
请尝试使用mozilla浏览器进行此场景。我在chrome上也遇到过同样的问题,但它在mozilla上运行良好。
尝试为ajax请求添加值为“Get”的“type”参数。
请参阅本条—
$.ajax({
type: "Get",
url: "data.json",
dataType: "json",
success: function(data) {
},
error: function(){
alert("json not found");
}
});
你不能从本地文件中检索json,所以你应该设置一个服务器,比如:localhost:8080/C9HS_19.htmly你不能从本地文件中检索json OK,但为什么在我的基本操作系统上它能工作呢?它在网页上显示了json对象。抱歉,但我知道,如果没有服务器,您无法通过ajax本地文件调用创建简单的nodejs服务器,或者设置apach,并使用itOk,但我的问题仍然可用。为什么在我的基本操作系统上它不使用任何web服务器就可以工作?但是我的虚拟机有internet连接。请尝试直接通过虚拟机浏览器地址栏访问,并检查它是否返回数据!对不起,我不明白你想让我做什么。我的意思是你正在使用的URL“data19.json”,在浏览器地址栏中提供完整的URL,然后按enter键,如果它显示json数据,将该URL放在AJAX URL参数中,似乎有URL问题,它找不到URL,因此抛出404错误
$.ajax({
type: "Get",
url: "data.json",
dataType: "json",
success: function(data) {
},
error: function(){
alert("json not found");
}
});