1

我正在慢慢学习 JavaScript,并且正在努力构建一个测验。

所以我有一个非常基本的测验看这里

所以我的具体问题是

  1. 如何将问题和答案存储在外部 JSON 文件中?
  2. 我可以将问题和答案存储在另一种文件类型中,例如 CSV 文件吗?

也许我应该有一个函数来为我获取问答:

function getQuestions() {

}

一个可能的工作示例将不胜感激。

其他想法:我知道 Javascript/HTML 测验可以在这里写得更好,这就是我正在努力的方向。我知道使用 CSS 可以更好地呈现它(目前正在查看引导程序)。

4

3 回答 3

1

您可以在 head 中插入一个脚本标签,例如:

<script type="text/json" src="some.cvs" />

网络浏览器无法识别那些脚本标签,所以不要下载那些文件。

使用 jquery 或其他东西找到那些标签的 src 属性。使用 ajax 加载这些文件并解析为 json 数据:

var eles=$("script[type='text/json']").each(function(){
  var cvsurl=$(this).attr("src");
  $.ajax({
    dataType: "json",
    url: ,
    data: data,
    success: function(result){           
        //handling of your json data
     }
  });
})

我只是给出方法。

于 2013-07-30T04:43:49.383 回答
1

使用getJson加载文件并处理数据。

success函数中,您将拥有一个 JSON 对象。

至于将数据存储在 CSV 文件中:是的,您可以,但您必须解析

编辑:这种方法需要 jQuery。

对于纯 Javascript:

  • 进行 AJAX 调用以获取文件的内容
  • JSON.parse()响应。

为了进行 AJAX 调用,您还应该熟悉服务器端脚本语言。

在 php 中(比方说getQuiz.php):

<?php
     $data = file_get_contents ('quiz');
     echo json_encode($data);
?>

因此,发出 GET 请求,getQuiz.php响应将是quiz编码为 JSON的文件内容

var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
        // Here you have your response
        quiz_data = JSON.parse(xmlhttp.responseText);

        // Other code
    }
}
xmlhttp.open("GET","getQuiz.php",true);
xmlhttp.send();
于 2013-07-30T04:18:52.343 回答
0

你可以使用 jquery ajax。

$.ajax({
  dataType: "json",
  url: [location of your json file],
  data: data,
  success: 
    function(result){           
        //handling of your json data
    }
});
于 2013-07-30T04:18:14.577 回答