如何使用 JavaScript 将 JSON 数据从远程 URL 读取到本地文件存储中的文件
How to read JSON data from a remote URL to a file in the local file store using JavaScript?
我想点击远程网址
谷歌搜索后,我决定使用 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 支持。(在其他一些库中也有。
- Javascript:检测文件读取器中是否有图像
- 从多个文件中推送文本的函数(使用html5文件读取器上传)返回数组
- 从d3.js中的文件读取json数据不起作用
- Javascript文件读取器
- 从外部javascript文件读取var并将其转换为php变量
- 在jQuery/JS中将文件读取为字符串
- Chrome应用程序:从服务器上的文件读取和写入数据
- 文件读取器无法在chrome和IE中工作
- 将节点.js对象设置为从文件读取的数据
- Django从通过网站上传的文件读取
- 在文件读取器中追加的订单问题
- 从 JavaScript 中的本地 JSON 文件读取时出错
- 是否有可能使用三个.js文件读取STEP文件
- 将文件读取到 blob 并以 JavaScript 格式显示
- 文件读取器和 Blob 的关闭编译器警告 - 无法修复它
- 使用 knex 从文件读取并插入数据库结束错误
- Corodva 文件读取执行成功和失败回调
- 文件读取器 JS 抛出对象正忙于读取 blob
- 承诺在 NodeJS 中循环和文件读取
- 无法弄清楚 $.get 上的回调以将文本文件读取到数组中