簡體   English   中英

我可以使用javascript生成JSON文件嗎?

[英]Can I generate a JSON file with javascript?

我想在域“example1.com”上創建一個頁面,並在另一個域“example2.com/json.json”上獲取/解析JSON文件。 可以使用javascript(在example2.com上)生成json文件嗎? 我認為這可以用PHP完成,但我想用javascript做。 如果無法使用javascript生成json文件,是否可以從javascript文件中獲取/解析對象? EX:“example1.com”到“example2.com/js.js”

編輯:好的,所以不可能從javascript文件中獲取/解析對象,因為它是客戶端。 所以我唯一的選擇是生成一個JSON文件。 用Javascript可以做到這一點嗎? 我知道這可能不是最好的方式,但我想用JS而不是PHP來做。

json只是一個字符串格式的javascript對象,所以javascript可以生成json數據:

   var animal = {name: "cat", sound: "meow"};
   json = JSON.stringify(animal); //json is a JSON string

javascript不允許ajax調用到其他站點(跨站點腳本),但這是一個安全風險。 你可以查看jsonP這是一個解決這條規則的方法。

此外,您不能調用其他網站或您自己的服務器運行javascript返回的東西,因為javascript只在客戶端瀏覽器中運行(除非您使用像node.js這樣的javascript服務器)。 服務器必須在某處偵聽請求。

要用Javascript解析JSON對象,我會使用jQuery。

http://api.jquery.com/jQuery.parseJSON/

就像anthonybell所說,大多數瀏覽器不允許跨站點腳本,所以你需要調查jsonP或在同一個域上工作。

另外,要生成JSON,您可以使用javascript創建一個對象,然后循環通過它並輸出它或者只輸出JSON格式的數據,您可以在這里閱讀:
http://www.w3schools.com/json/

您可以使用JSONP - 基本上將您的JSON包裝在domain2.com上的回調函數中,如下所示:

jsonCallback(
    {
        "sites":
        [
            {
                "siteName": "JQUERY4U",
                "domainName": "http://www.jquery4u.com",
                "description": "#1 jQuery Blog for your Daily News, Plugins, Tuts/Tips & Code Snippets."
            },
            {
                "siteName": "BLOGOOLA",
                "domainName": "http://www.blogoola.com",
                "description": "Expose your blog to millions and increase your audience."
            },
            {
                "siteName": "PHPSCRIPTS4U",
                "domainName": "http://www.phpscripts4u.com",
                "description": "The Blog of Enthusiastic PHP Scripters"
            }
        ]
    }
);

然后你可以像這樣從domain1.com調用它:

(function($) {
var url = 'http://www.jquery4u.com/scripts/jquery4u-sites.json?callback=?';

$.ajax({
   type: 'GET',
    url: url,
    async: false,
    jsonpCallback: 'jsonCallback',
    contentType: "application/json",
    dataType: 'jsonp',
    success: function(json) {
       console.dir(json.sites);
    },
    error: function(e) {
       console.log(e.message);
    }
});

})(jQuery);

您無法用JavaScript替換PHP(除非您有NodeJS或其他東西)。

使用PHP生成JSON將返回JSON到客戶端。

讓Javascript生成您的JSON將返回Javascript到客戶端。 如果你這樣做,即使使用JSON也沒有意義。

如果要生成JSON文檔(從服務器上的數據源)而不是靜態JSON文件,則需要某種服務器端編程。

如果您想使用JavaScript,您需要安裝和配置NodeJS(可能還有一些其他服務,如Web服務器,或使用NodeJS創建服務器)並編寫生成和提供JSON的腳本。

創建腳本以生成JSON(並創建基本服務器來托管它)並不是那么困難。 安裝和配置Node可能會更加困難。

如果您已經可以訪問服務器上的PHP(和Web服務器),請使用它。

如果您的輸出文件可以是靜態的(和您正在運行的窗口),您可以使用JScript生成靜態文件。 這將要求您物理運行腳本(或者可能創建一個計划任務來為您運行它)。 因此,您每隔一段時間就會用新生成的JSON替換靜態文件。 可能不是你想要的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM