如何使用 JavaScript 将 JSON 数据从远程 URL 读取到本地文件存储中的文件

How to read JSON data from a remote URL to a file in the local file store using JavaScript?

本文关键字:文件 读取 URL 存储 JavaScript 何使用 JSON 数据      更新时间:2023-09-26

我想点击远程网址

谷歌搜索后,我决定使用 dojo.io.script.get ,因为仅支持跨通道调用。但是,我在FF浏览器中不断收到以下错误,但也显示了正确的响应。

语法错误 http://reviews.apitestcustomer.bazaarvoice.com/bvstaging/data/reviews.json?callback=%3F&Filter=ProductId%3A14151&PassKey=t5sv9b3nvawhkljtlmegk8d6s&apiversion=5.0 1号线

?({"Include":{},"HasErrors":false,"Offset":0,"TotalResults":2,"Locale":"en_US","Errors":[],"Results":[{"TagDimensions":{},"TagDimensionsOrder":[],"AdditionalFieldsOrder":[],"Cons":null,"IsRecommendation":null,"IsRatingsOnly":false,"UserNickname":null,"Pros":null,"Photos":[],"ContextDataValues":{},"Videos":[],"ContextDataValuesOrder":[],"LastModificationTime":"2012-01-10T09:10:33.000-06:00","SubmitId":"ex7csdrwiorg3tbgpshbfcljd","TotalFeedbackCount":0,"TotalPositiveFeedbackCount":0,"BadgesOrder":[],"UserLocation":null,"Badges":{},"AuthorId":"shiji_sk","SecondaryRatingsOrder":[],"IsFeatured":false,"ProductRecommendationIds":[],"Title":"test title","ProductId":"14151","AdditionalFields":{},"CampaignId":null,"Helpness":null,"TotalNegativeFeedbackCount":0,"SubmitTime":"2012-01-09T05:55:58.000-06:00","ContentLocale":"en_US","Rating":5,"RatingRange":5,"TotalCommentCount":0,"ReviewText":"测试测试测试","审核状态":"已批准","客户端响应":[],"Id":"759582","SecondaryRatings":{},"CommentIds":[],"LastModeratedTime":"2012-01-10T09:10:33.000-06:00"},{"TagDimensions":{},"TagDimensionsOrder":[],"ExtraalFieldsOrder":[],"Cons":null,"IsRecommendation":null,"IsRatingsOnly":false,"UserNickname":null,"Pros":null,"Photos":[],"ContextDataValues":{},"视频":[],"ContextDataValuesOrder":[],"LastModificationTime":"2012-01-10T09:10:33.000-06:00","SubmitId":"p6q13u5vgiqjfyk1xl5mktuvp","TotalFeedbackCount":0,"TotalPositiveFeedbackCount":0,"BadgesOrder":[],"UserLocation":null,"Badges":{},"AuthorId":"shiji","secondaryRatingsOrder":[],"IsFeatured":false,"ProductRecommendationIds":[],"Title":"白色评论标题","ProductId":"14151","ExtraalFields":{},"CampaignId":null,"Helpness":null,"TotalNegativeFeedbackCount":0,"SubmitTime":"2012-01-09T04:16:40.000-06:00","ContentLocale":"en_US","Rating":5,"RatingRange":5,"TotalCommentCount":0,"ReviewText":"白色织物卷臂躺椅和当代软垫扶手椅的评论:'好一个:-(","审核状态":"已批准","客户响应":[],"Id":"759547","次要评级":{},"评论ID":[],"最后适度时间":"2012-01-10T09:10:33.000-06:00"}],"限制":10}(;

这是我的脚本:

_invokeCrossSiteService: function(url, method, content, catEntryId, callbackFunction, appData, refresh)
{
    alert("in _invokeCrossSiteService..........................");
    if (content != null) {
        var temp = content;
        content = dojo.toJson(temp,false);
    }
     dojo.io.script.get({         
         // The URL to get JSON from Twitter         
         url: "http://reviews.apitestcustomer.bazaarvoice.com/bvstaging/data/reviews.json",         
         // The callback paramater         
         //callbackParamName: "callback", 
         // The content to send         
         content: {       
                    callback: "?",
                    Filter: "ProductId':"+catEntryId, // Searching for catEntryId
                    PassKey: "t5sv9b3nvawhkljtlmegk8d6s",
                    apiversion: "5.0"
                },         
         // The success callback         
         load: function(resp) {
            alert("resp in _invokeCrossSiteService - "+resp);
            callbackFunction(status, data, appData);
         },
         error: function(resp){
             alert("in error - "+resp);
         }
    });
}

有人可以在这里帮我吗?

更改:

callback: "?",

callbackParamName: "callback",

问题就在这里:

callback: "?"

您正在使用 JSON-P(不仅仅是 JSON(。JSON-P 的工作方式是使用给定的 URL 向页面添加 script 元素;然后从远程端点加载脚本,并且(根据 JSON-P 的一般约定(它完全由对您提供的函数名称的调用组成,传入 JavaScript 对象文本(JSON 是对象文本语法的子集(。

因此,您需要为要调用的终结点提供加载资源后应调用的函数的名称,因为这就是 JSON-P 的工作方式。例如:

callback: "dataReady"

。页面上具有此全局函数的位置:

function dataReady(data) {
}

请注意,您返回的内容是如何以 ?(...)  的形式返回的 — 因为您为函数指定的名称是 ?

我希望 Dojo 很可能有一种处理函数名称的方法,例如,可能值得查看文档以查看是否有明确的 JSON-P 支持。(在其他一些库中也有。