Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 随机引用器(使用JSON文件)由于某种原因无法工作_Javascript_Jquery_Json - Fatal编程技术网

Javascript 随机引用器(使用JSON文件)由于某种原因无法工作

Javascript 随机引用器(使用JSON文件)由于某种原因无法工作,javascript,jquery,json,Javascript,Jquery,Json,我的按钮用于在页面加载和单击按钮时显示随机引用。看起来我的JS文件(第17行)中没有定义“quotes”,但我不确定如何解决这个问题。知道我做错了什么吗?我非常感谢你的帮助 HTML: JS: 从getJSON回调内部调用nextQuote函数,并从那里设置事件。然后您就可以访问接收到的数据 $(function() { var quoteSpan = $("#quoteText"); var authorSpan = $("#authorText");

我的按钮用于在页面加载和单击按钮时显示随机引用。看起来我的JS文件(第17行)中没有定义“quotes”,但我不确定如何解决这个问题。知道我做错了什么吗?我非常感谢你的帮助

HTML:

JS:


getJSON
回调内部调用
nextQuote
函数,并从那里设置事件。然后您就可以访问接收到的数据

$(function() 
{
    var quoteSpan     = $("#quoteText"); 
    var authorSpan    = $("#authorText"); 
    var submitButton  = $('#submit'); 
    var mydata;

    var oldQuoteIndex = -1;
    var newQuoteIndex;

    $.getJSON("quotes.json", function(data) {
        mydata = data;
        nextQuote();
        submitButton.click(nextQuote);
    });

    function nextQuote() {
        do {
            newQuoteIndex = Math.floor(Math.random() * mydata.quotes.length);
        } while (newQuoteIndex == oldQuoteIndex); 

        quoteSpan.text(mydata.quotes[newQuoteIndex].text); 
        authorSpan.text(mydata.quotes[newQuoteIndex].author);

        oldQuoteIndex = newQuoteIndex; 
    }
});
一旦关闭
$.getJSON()
,数据(在json结果的意义上)就超出范围。一旦你解决了这个问题,你就会意识到它仍然没有被定义,因为你得到的是异步的,
nextQuote()
发生在
$之前。getJSON
返回短版本:
{ "quotes" : [

        {
            "text": "Whatever you are, be a good one.", "author": "Abraham Lincoln", "provider": "Bennett",
            "tags":["Famous Inspirational Quotes", "BrainyQuote.com", "President Lincoln"]                  
        }, 
        {
            "text": "It has been my philosophy of life that difficulties vanish when faced boldly.", "author": "Isaac Asimov", "provider": "Bennett",
            "tags":["Famous Inspirational Quotes", "BrainyQuote.com", "Science Fiction"]
        }, 
        {
            "text": "Enjoy life. There’s plenty of time to be dead.", "author": "Anonymous", "provider": "Bennett",
            "tags":["Famous Inspirational Quotes", "BrainyQuote.com", "Anonymous Quote"]
        }, 
        {
            "text": "Every moment is a fresh beginning.", "author": "T.S. Eliot", "provider": "Bennett", 
            "tags":["Famous Inspirational Quotes", "BrainyQuote.com", "Author T.S. Eliot"]
        }, 
        {
            "text": "One day your life will flash before your eyes. Make sure it is worth watching.", "author": "Anonymous", "provider": "Bennett",  
            "tags":["Famous Inspirational Quotes", "BrainyQuote.com", "President Lincoln"]
        }

        ]}
$(function() 
{
    var quoteSpan     = $("#quoteText"); 
    var authorSpan    = $("#authorText"); 
    var submitButton  = $('#submit'); 
    var data;

    $.getJSON("quotes.json", function(data) {
        window.alert(data);
    });

    var oldQuoteIndex = -1;
    var newQuoteIndex;

    function nextQuote() {
        do {
            newQuoteIndex = Math.floor(Math.random() * data.quotes.length);
        } while (newQuoteIndex == oldQuoteIndex); 

        quoteSpan.text(data.quotes[newQuoteIndex].text); 
        authorSpan.text(data.quotes[newQuoteIndex].author);

        oldQuoteIndex = newQuoteIndex; 
   }
    submitButton.click(nextQuote);
    nextQuote();
});
$(function() 
{
    var quoteSpan     = $("#quoteText"); 
    var authorSpan    = $("#authorText"); 
    var submitButton  = $('#submit'); 
    var mydata;

    var oldQuoteIndex = -1;
    var newQuoteIndex;

    $.getJSON("quotes.json", function(data) {
        mydata = data;
        nextQuote();
        submitButton.click(nextQuote);
    });

    function nextQuote() {
        do {
            newQuoteIndex = Math.floor(Math.random() * mydata.quotes.length);
        } while (newQuoteIndex == oldQuoteIndex); 

        quoteSpan.text(mydata.quotes[newQuoteIndex].text); 
        authorSpan.text(mydata.quotes[newQuoteIndex].author);

        oldQuoteIndex = newQuoteIndex; 
    }
});