2012-01-16 9 views
0

私はグーグル後remote URLJavaScriptを使用してリモートURLからJSONデータをローカルファイルストア内のファイルに読み込む方法は?

をヒットしたいが、私は、クロスチャネルコールが点においてのみサポートされているように、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、 "ロケール":」 []、[追加]、[削除]、[削除]、[削除]、[削除]、[削除]、[削除] []、 "ContextDataValues":{}、 "Videos":[]、 "ContextDataValuesOrder":[]、 "LastModificationTime": ""、 "UserRequestOnly":false、 "UserNickname" 「TotalPeedbackCount」:0、「TotalPositiveFeedbackCount」:0、「BadgesOrder」:[]、「UserLocation」:null、「BadgesOrder:」、「バッジ":{}、" AuthorId ":" shiji_sk "、" SecondaryRatingsOrder ":[]、" IsFテストのタイトル "、" ProductId ":" 14151 "、" AdditionalFields ":{}、" CampaignId ":null、" Helpfulness ":null、" TotalNegativeFeedbackCount ":false、" ProductRecommendationIds " 0、 "SubmissionTime": "2012-01-09T05:55:58.000-06:00"、 "ContentLocale": "en_US"、 "Rating":5、 "RatingRange":5、 "TotalCommentCount":0、 "ReviewText": "テストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテストテスト"、 "ModerationStatus": "APPROVED"、 "ClientResponses":[]、 "Id": "759582" "SecondRatings":{}、 "CommentIds":[]、 "LastModeratedTime": "2012-01-10T09:10:3​​3.000-06:00"}、{"TagDimensions":{}、 "TagDimensionsOrder":[]、 []、 "ContextDataValues":{}、 "ProF":null、 "Photos":null、 "IsRecommended":null、 "IsRatingsOnly":false、 "UserNickname" 、 "Video":[]、 "ContextDataValuesOrder":[]、 "LastModificationTime": "2012-01-10T09:10:3​​3.000-06:00"、 "SubmissionId": "p6q13u5vgiqjfyk1xl5mktuvp"、 "TotalFeedbackCount":0、 「TotalPositiveFeedbackCount」:0、「BadgesOrder」:[]、「UserLocation」:null、「バッジ」: 「ProductRecommendationIds」:[]、「Title」:「White review title」、「ProductId」:「14151」、「ProductRecommendationIds」、「ProductRecommendationIds」、「ProductRecommendationIds」: 0、 "SubmissionTime": "2012-01-09T04:16:40.000-06:00"、 "ContentLocale": "en_US"、 "HelpFields":null、 "Helpfulness":null、 "TotalNegativeFeedbackCount" "、" Rating ":5、" RatingRange ":5、" TotalCommentCount ":0、" ReviewText ":"ホワイトファブリックロールアームのレビューChaise &現代布張りアームチェア:\ nグッドワン:-) "、" ModerationStatus ":" 「APPR」、「ClientResponses」:[]、「Id」:「759547」、「SecondaryRatings」:{}、「CommentIds」:[]、「LastModeratedTime」:「2012-01-10T09:10:3​​3.000-06:00 "}"、 "Limit":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); 
     } 
    }); 
} 

誰かがplsはここに私を助けることはできますか?

+0

Javaを使用しているのではなく、JavaScriptを使用しているようです。 'callback'に有効なパラメータを渡していないか、あるいはdojoが正しく置き換えられていないことがわかります。 JSONP(これはあなたがここでやっていることです)について必ず読んでください。 –

+0

私はより良い方法は、リモートコンテンツを読むためにwebservicesを使用することだと思います。 javascriptを使ってjsonを読むのは安全な方法ではありません。どのようなjson構文解析方法を使っても行うことができます。 –

答えて

0

変更:

callbackParamName: "callback", 
0

callback: "?", 

問題はここにある:

callback: "?" 

あなたはJSON-P(JSONだけではなく)を使用しています。 JSON-Pの仕組みは、指定されたURLのページにscript要素を追加することです。スクリプトはリモートエンドポイントからロードされ、(JSON-Pの一般契約によって)あなたが提供する関数名を呼び出すだけで、JSONはオブジェクトリテラル構文のサブセットであるJavaScriptオブジェクトリテラルを渡します。

したがって、機能の名前を呼び出すエンドポイントに、を指定する必要があります。は、リソースがロードされたらすぐに呼び出す必要があります。これがJSON-Pの仕組みです。名前は、あなたがしているので、何を取り戻すことは、フォーム?(...)   —であるか

function dataReady(data) { 
} 

注:だから例えば:あなたはページ上のこのグローバルな機能を持っている

callback: "dataReady" 

...機能を与えるのは?です。

Dojoには関数名などの処理方法があると思います。明示的なJSON-Pサポートがあるかどうかを調べるには、ドキュメントを調べる価値があります。 (他のライブラリにもあります)

関連する問題