如何使用Jquery和ajax从JSON文件检索数据?

如何使用Jquery和ajax从JSON文件检索数据?,jquery,json,ajax,Jquery,Json,Ajax,今天发生了一件奇怪的事情:我试图使用jquery和ajax从JSON文件中检索一些数据,并将这些数据显示在网页上。我在互联网上找到的这个例子在基本操作系统上对我有用。当我尝试从带有Win10操作系统的虚拟机上运行它时,它不工作,这意味着它会使我陷入:alert('服务器出现问题。请稍后重试!')。为什么? 非常感谢 这在我的data19.json文件中: { "one": "Learned Optimism", "two": "Deliberate Practice", "thre

今天发生了一件奇怪的事情:我试图使用jquery和ajax从JSON文件中检索一些数据,并将这些数据显示在网页上。我在互联网上找到的这个例子在基本操作系统上对我有用。当我尝试从带有Win10操作系统的虚拟机上运行它时,它不工作,这意味着它会使我陷入:
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");
        }
    });