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