有没有办法在javascript中获取外部数据?

时间:2014-02-06 03:52:45

标签: javascript

我对javascript知之甚少,所以请善待。 我已经创建了一个非常基本的javascript,显示了一位政治家的随机引用,他说,何时,它提供了一个指向报价来源的链接。 看起来像这样:

/the quote
var n_text = new Array ();
/the link
var n_lnkk = new Array ();
/the party member that said it and when
var n_part = new Array ();

n_text [1]="blah";
n_text [2]="blah blah";
n_text [3]="blah blah blah";
etc

n_lnkk [1]="http://...";
n_lnkk [2]="http://...";
n_lnkk [3]="http://...";
etc

n_part [1]="whosaidit1";
n_part [2]="whosaidit2";
n_part [3]="whosaidit3";
etc

然后我使用math.random和document.write显示一个随机引用并显示一个推特按钮,以便人们可以发推特,并刷新按钮以显示另一个随机引用,如下所示:

等等等等等等 HTTP:// ... whosaidit和什么时候

我知道document.write不是最好的方法,但是我尝试了其他方法,但他们没有使用twitter按钮,所以必须等到直到找到解决方案但它不是我现在的问题。

问题是这个脚本已经变得庞大,(差不多有1000个引号)所以博主不允许我再添加任何文本。 有没有办法将数据放在某个地方的外部文件中并让javascript读取并显示结果并保持相对简单,因为我对jscript或html有非常基本的了解? 请记住我正在使用博客,因此我的选项有限,但我认为只有数据的外部文件才能正常工作

3 个答案:

答案 0 :(得分:1)

实际上这很简单,只需将数组复制并粘贴到单独的.js文件中即可。只复制到您拥有document.write的位置。然后将其包含在您的代码中......

<script src="http://HostedSomewhere/Quotes.js"></script>

确保在旧代码之前包含该内容。

答案 1 :(得分:1)

我想我找到了一个简单实用的解决方案。 iFrame做到了。 我在免费服务器上托管了我的脚本,然后使用iFrame在我的博客上获取它。这是我得到的第一个答案,但它似乎已被删除。

答案 2 :(得分:0)

是的,您可以将数据放在外部文件中。我建议JSON file

您要做的就是调用JSON文件:

$.getJSON("link/to/json/file.json", variableOrFunctionNameHere);

OR

$.getJSON("link/to/json/file.json", function(d){...logic here...});
//the d is the data from the file.

但是,这可能并不总是有效,所以我会查看this question如何以非异步方式加载它。

现在,要使用JSON文件,您需要学习一些符号。

假设您将JSON文件设置为:

[
    {
        "name" : "Chris Christie",
        "quote": "I closed the bridge!",
        "date" : "February 1, 2014",
        "link" : "https://somelinktosomewhere.com"
    },
    {
        "name" : "Hillary Clinton",
        "quote": "Vote for me if I run next election!",
        "date" : "March 31, 2014",
        "link" : "https://somelinktosomewhere.com"
    },    
]

并且JSON文件被加载到名为myVariable的变量中。然后,要访问它,您会在JSON文件的大小内找到一个随机数(括号内的每个选项都是一个对象),然后myVariable[randomNumber].name将访问该文件的name属性。因此,例如,myVariable[0].name将返回字符串"Chris Christie"。 JSON文件非常强大且易于使用。