使用javascript读取JSON文件时出现问题

使用javascript读取JSON文件时出现问题,javascript,jquery,html,json,Javascript,Jquery,Html,Json,这是一个简单的html,当输入相应的文本时,单击按钮后,相应的票价将显示在html中。所有票证信息都存储在一个名为“ticketPriceInArray.js”的.json文件中,我一直试图使用$.getJSON()读取它,但不幸的是,我没有获得任何成功。奇怪的是,我没有得到任何警告,所以我无法修复它。请看看你能不能给我一些建议。多谢各位 通过添加AJAX错误处理程序,我收到了 { "tickets":[ { "type":"A Ticket", "price":2

这是一个简单的html,当输入相应的文本时,单击按钮后,相应的票价将显示在html中。所有票证信息都存储在一个名为“ticketPriceInArray.js”的.json文件中,我一直试图使用$.getJSON()读取它,但不幸的是,我没有获得任何成功。奇怪的是,我没有得到任何警告,所以我无法修复它。请看看你能不能给我一些建议。多谢各位

通过添加AJAX错误处理程序,我收到了

{ 
"tickets":[
      {
    "type":"A Ticket",
    "price":220,
  },

  {
    "type":"B Ticket",
    "price":180,
  },

  {
    "type":"C Ticket",
    "price":120,
  },

  {
    "type":"D Ticket",
    "price":100,
  },

  {
    "type":"E Ticket",
    "price":80,
  },

  {
    "type":"F Ticket",
    "price":50,
  }
  ]
}

问题是每个price属性后面都有逗号。

通过添加AJAX错误处理程序,我收到了这个消息

{ 
"tickets":[
      {
    "type":"A Ticket",
    "price":220,
  },

  {
    "type":"B Ticket",
    "price":180,
  },

  {
    "type":"C Ticket",
    "price":120,
  },

  {
    "type":"D Ticket",
    "price":100,
  },

  {
    "type":"E Ticket",
    "price":80,
  },

  {
    "type":"F Ticket",
    "price":50,
  }
  ]
}

问题是每个price属性后面都有逗号。

假设以下事实:

  • 您正在使用firefox
  • 单击#按钮1时,网络选项卡中没有流量
  • 没有记录任何错误
。。。我想说:
您单击的元素不是
$(“#按钮1”)

您确定您单击的元素具有ID“Button1”,并且只有一个使用该ID的元素吗


您是从Web服务器还是从本地文件系统运行此操作?

假设以下事实:

  • 您正在使用firefox
  • 单击#按钮1时,网络选项卡中没有流量
  • 没有记录任何错误
。。。我想说:
您单击的元素不是
$(“#按钮1”)

您确定您单击的元素具有ID“Button1”,并且只有一个使用该ID的元素吗


您是从Web服务器还是从本地文件系统运行此功能?

解决此问题的方法稍有不同。这是假设您没有根据传递到url的某些数据更改机票价格

ticketPriceInArray.js

<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery-1.3.2-vsdoc.js"></script>
<script type="text/javascript">
    $(function() {


        $("#Button1").click(function() {

           $.getJSON("ticketPriceInArray.js", 
        function(json) {
       var ticketPriceArray=[json.tickets[0].price, json.tickets[1].price,               
                json.tickets[2].price, json.tickets[3].price, json.tickets[4].price, 
                json.tickets[5].price];

                         alert(json.tickets[0].type);

         var inputWord =$("#keyword").val();
             if (inputWord=="A"){$("#result").text(ticketPriceArray[0]);}   
             if (inputWord=="B"){$("#result").text(ticketPriceArray[1]);}
             if (inputWord=="C"){$("#result").text(ticketPriceArray[2]);}   
             if (inputWord=="D"){$("#result").text(ticketPriceArray[3]);}   
             if (inputWord=="E"){$("#result").text(ticketPriceArray[4]);}   
             if (inputWord=="F"){$("#result").text(ticketPriceArray[5]);}       
         });

       });
  });    
  </script>
"parsererror" SyntaxError: Unexpected token }
主文件

{ 
    "A" : 220,
    "B" : 180,
    "C" : 120,
    "D" : 100,
    "E" : 80,
    "F" : 50
  };

var票据价格={};
$(函数(){
$(“#按钮1”)。单击(函数(){
$.getJSON(“ticketPriceInArray.js”,函数(returnedJSON){
机票价格=返回的JSON;
$(“#结果”).text(门票价格[$(“#关键字”).val());
});
});
});    

如果有任何考虑因素(或关于我的假设的问题),请告诉我,我将根据这些因素进行更新

解决这个问题的方法有点不同。这是假设您没有根据传递到url的某些数据更改机票价格

ticketPriceInArray.js

<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery-1.3.2-vsdoc.js"></script>
<script type="text/javascript">
    $(function() {


        $("#Button1").click(function() {

           $.getJSON("ticketPriceInArray.js", 
        function(json) {
       var ticketPriceArray=[json.tickets[0].price, json.tickets[1].price,               
                json.tickets[2].price, json.tickets[3].price, json.tickets[4].price, 
                json.tickets[5].price];

                         alert(json.tickets[0].type);

         var inputWord =$("#keyword").val();
             if (inputWord=="A"){$("#result").text(ticketPriceArray[0]);}   
             if (inputWord=="B"){$("#result").text(ticketPriceArray[1]);}
             if (inputWord=="C"){$("#result").text(ticketPriceArray[2]);}   
             if (inputWord=="D"){$("#result").text(ticketPriceArray[3]);}   
             if (inputWord=="E"){$("#result").text(ticketPriceArray[4]);}   
             if (inputWord=="F"){$("#result").text(ticketPriceArray[5]);}       
         });

       });
  });    
  </script>
"parsererror" SyntaxError: Unexpected token }
主文件

{ 
    "A" : 220,
    "B" : 180,
    "C" : 120,
    "D" : 100,
    "E" : 80,
    "F" : 50
  };

var票据价格={};
$(函数(){
$(“#按钮1”)。单击(函数(){
$.getJSON(“ticketPriceInArray.js”,函数(returnedJSON){
机票价格=返回的JSON;
$(“#结果”).text(门票价格[$(“#关键字”).val());
});
});
});    

如果有任何考虑因素(或关于我的假设的问题),请告诉我,我将根据这些因素进行更新

下面的示例在FF和Chrome中使用您提供的确切JSON运行良好。在IE中,您必须删除价格后的逗号,正如Phil已经说过的

在我的测试中,test.html和test.js都放在我的apache服务器根目录中;由于安全限制,直接从桌面到浏览器查看文件显然无法正常工作

<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery-1.3.2-vsdoc.js"></script>

<script type="text/javascript">

  var ticket_prices = {};

  $(function() {
     $("#Button1").click(function() {

        $.getJSON("ticketPriceInArray.js", function(returnedJSON) {
            ticket_prices = returnedJSON;
            $("#result").text( ticket_prices[ $("#keyword").val() ] );
        });

     });
  });    
</script>

$(函数(){
$(“#按钮1”)。单击(函数(){
$.getJSON(“test.js”,函数(json){
for(json.tickets中的var i){
var type=json.tickets[i].type;
var price=json.tickets[i].price;
$('#result')。追加('type:'+type+',price:'+price+'
'); } }); }); }); 点击我

我建议您使用验证JSON;或者仅仅依靠一个好的编码器,而不是手工操作;)

下面的示例在FF和Chrome中使用您提供的确切JSON运行良好。在IE中,您必须删除价格后的逗号,正如Phil已经说过的

在我的测试中,test.html和test.js都放在我的apache服务器根目录中;由于安全限制,直接从桌面到浏览器查看文件显然无法正常工作

<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery-1.3.2-vsdoc.js"></script>

<script type="text/javascript">

  var ticket_prices = {};

  $(function() {
     $("#Button1").click(function() {

        $.getJSON("ticketPriceInArray.js", function(returnedJSON) {
            ticket_prices = returnedJSON;
            $("#result").text( ticket_prices[ $("#keyword").val() ] );
        });

     });
  });    
</script>

$(函数(){
$(“#按钮1”)。单击(函数(){
$.getJSON(“test.js”,函数(json){
for(json.tickets中的var i){
var type=json.tickets[i].type;
var price=json.tickets[i].price;
$('#result')。追加('type:'+type+',price:'+price+'
'); } }); }); }); 点击我

我建议您使用验证JSON;或者仅仅依靠一个好的编码器,而不是手工操作;)

使用Firebug或Chrome developer工具,您可以检查网络流量,以查看JSON数据是否实际从服务器获取,以及它是否包含预期的内容。如果是这样,请尝试在调用回调后立即通知
json
变量,以确保a)它被调用,b)它包含正确解析的json数据。使用最新的JQuery版本,当前版本是v1.6.1:在检查网络流量后,我在那里没有看到任何json文件。可能根本没有获取JSON文件。我已经将JSON文件与html文件放在同一个文件夹中。有什么我没有做得好的吗?使用Firebug或Chrome developer工具,您可以检查网络流量,看看JSON数据是否真的从服务器获取,以及它是否包含预期的内容。如果是这样,请尝试在调用回调后立即向
json
变量发出警报