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

时间:2012-01-16 13:07:43

标签: javascript json dojo

我想点击remote URL

谷歌搜索后,我决定使用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行

     ?

({ “包括”:{}, “HasErrors”:假, “偏移量”:0, “使用totalResults”:2 “区域设置”: “EN_US”, “错误”:[], “结果”: [{ “TagDimensions”:{}, “TagDimensionsOrder”:[], “AdditionalFieldsOrder”:[], “缺点”:NULL, “IsRecommended”:NULL, “IsRatingsOnly”:假 “UserNickname”:NULL, “赞成”日期null, “照片”:[], “ContextDataValues”:{}, “画”:[], “ContextDataValuesOrder”:[], “LastModificationTime”: “2012-01-10T09:10:3​​3.000-06:00” “SubmissionId”: “ex7csdrwiorg3tbgpshbfcljd”, “TotalFeedbackCount”:0 “TotalPositiveFeedbackCount”:0 “BadgesOrder”:[], “用户位置”:NULL, “徽章”:{}, “AUTHORID”: “shiji_sk”,” SecondaryRatingsOrder“:[],”IsFeatured“:false,”ProductRecommendationIds“:[],”Title“:”test title“,”ProductId“:”14151“,”AdditionalFields“:{},”CampaignId“:null,”有利于 “:NULL,” TotalNegativeFeedbackCount “:0”,SubmissionTime “:” 2012-01-09T05:55:58.000-06:00" , “ContentLocale”: “EN_US”, “评分”:5 “RatingRange”:5 ,“TotalCommentCount”:0,“ReviewText”:“测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试试验 “ ”ModerationStatus“: ”已批准“, ”ClientResponses“:[], ”ID“: ”759582“, ”SecondaryRatings“:{}, ”CommentIds“:[], ”LastModeratedTime“:” 2012-01-10T09 :10:3​​3.000-06:00 “},{” TagDimensions “:{},” TagDimensionsOrder “:[],” AdditionalFieldsOrder “:[],” 缺点 “:NULL,” IsRecommended “:NULL,” IsRatingsOnly“:假“UserNickname”:NULL, “赞成”:空, “照片”:[], “ContextDataValues”:{}, “画”:[], “ContextDataValuesOrder”:[], “LastModificationTime”:“2012-01- 10T09:10:3​​3.000-06:00" , “SubmissionId”: “p6q13u5vgiqjfyk1xl5mktuvp”, “TotalFeedbackCount”:0 “TotalPositiveFeedbackCount”:0 “BadgesOrder”:[], “用户位置”:NULL, “徽章”:{} ,“AuthorId”:“shiji”,“SecondaryRatingsOrder”:[],“IsFeatured”:false,“ProductRecommendationIds”:[],“Title”:“white review title”,“ProductId”:“14151”,“AdditionalFields” :{}, “CAMPAIGNID”:NULL, “有利于”:NULL, “TotalNegativeFeedbackCount”:0 “SubmissionTime”: “2012-01-09T04:16:40.000-06:00”, “ContentLocale”: “EN_US”, “评级”:5,“RatingRange”:5,“TotalCommentCount”:0,“ReviewText”:“审查白色织物卷臂C haise&当代软垫扶手椅:\ 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);
         }
    });
}

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

变化:

callback: "?",

callbackParamName: "callback",

答案 1 :(得分:0)

问题在于:

callback: "?"

您正在使用JSON-P(不仅仅是JSON)。 JSON-P的工作方式是使用给定的URL向您的页面添加script元素;然后从远程端点加载脚本,并且(通过JSON-P的一般合同)它完全包含对您提供的函数名的调用,传入JavaScript对象文字(JSON是对象文字语法的子集)。 / p>

因此,您需要为端点提供一个资源加载后应调用的函数名称​​ ,因为这就是JSON-P的工作原理。例如:

callback: "dataReady"

...您在页面上拥有此全局功能:

function dataReady(data) {
}

请注意您收到的内容是?(...)形式 - 因为您提供该功能的名称为?

我希望Dojo可能有一种处理函数名称的方法,对你来说,可能值得查看文档,看看是否有明确的JSON-P支持。 (还有其他一些图书馆。)