繁体   English   中英

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

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

我想点击一个远程URL

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

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

?({“” Includes“:{},” HasErrors“:false,” Offset“:0,” TotalResults“:2,” Locale“:” en_US“,” Errors“:[],” Results“:[{” TagDimensions“:{},” TagDimensionsOrder“:[],” AdditionalFieldsOrder“:[],” Cons“:null,” IsRecommended“:null,” IsRatingsOnly“:false,” UserNickname“:null,” Pros“:null, “照片”:[],“ ContextDataValues”:{},“视频”:[],“ ContextDataValuesOrder”:[],“ LastModificationTime”:“ 2012-01-10T09:10:3​​3.000-06:00”,“ SubmissionId “ ::” ex7csdrwiorg3tbgpshbfcljd“,” TotalFeedbackCount“:0,” TotalPositiveFeedbackCount“:0,” BadgesOrder“:[],” UserLocation“:null,” Badges“:{},” AuthorId“:” shiji_sk“,” SecondaryRatingsOrder“: [],“ IsFeatured”:false,“ ProductRecommendationIds”:[],“ Title”:“测试标题”,“ ProductId”:“ 14151”,“ AdditionalFields”:{},“ CampaignId”:null,“ Helpfulness”: null,“ TotalNegativeFeedbackCount”:0,“ SubmissionTime”:“ 2012-01-09T05:55:58.000-06:00”,“ ContentLocale”:“ en_US”,“ Rating”:5,“ RatingRange”:5,“ TotalCommentCount “:0,” ReviewText“:”“测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试 t“,” ModerationStatus“:” APPROVED“,” ClientResponses“:[],” Id“:” 759582“,” SecondaryRatings“:{},” CommentIds“:[],” LastModeratedTime“:” 2012-01-10T09 :10:3​​3.000-06:00“},{” TagDimensions“:{},” TagDimensionsOrder“:[],” AdditionalFieldsOrder“:[],” Cons“:null,” IsRecommended“:null,” IsRatingsOnly“:false ,“ UserNickname”:null,“ Pros”:null,“ Photos”:[],“ ContextDataValues”:{},“ Videos”:[],“ ContextDataValuesOrder”:[],“ LastModificationTime”:“ 2012-01- 10T09:10:3​​3.000-06:00“,” SubmissionId“:” p6q13u5vgiqjfyk1xl5mktuvp“,” TotalFeedbackCount“:0,” TotalPositiveFeedbackCount“:0,” BadgesOrder“:[],” UserLocation“:null,” Badges“:{} ,“ AuthorId”:“ shiji”,“ SecondaryRatingsOrder”:[],“ IsFeatured”:false,“ ProductRecommendationIds”:[],“ Title”:“白色评论标题”,“ ProductId”:“ 14151”,“ AdditionalFields” :{},“ CampaignId”:null,“ Helpfulness”:null,“ TotalNegativeFeedbackCount”:0,“ SubmissionTime”:“ 2012-01-09T04:16:40.000-06:00”,“ ContentLocale”:“ en_US”, “ Rating”:5,“ RatingRange”:5,“ TotalCommentCount”:0:“ ReviewText”:“白色织物卷臂柴的审查 se&当代软垫扶手椅:\\ n好一个:-)“,” ModerationStatus“:” APPROVED“,” ClientResponses“:[],” Id“:” 759547“,” SecondaryRatings“:{},” CommentIds“:[] ,“ LastModeratedTime”:“ 2012-01-10T09:10:3​​3.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支持。 (在其他一些库中。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM