2017-04-10 1 views
1

もともと私はこのようないくつかのコードを書いた:GoogleニュースのAPIはエラーキャッチされないでSyntaxError与える:予期しないトークン「)」

var val="MSFT"; 
$.get('https://www.google.com/finance/company_news?q='+val+'&output=rss', 
    function (data) { 
    console.log(data); 
}); 

を、そのコードは、ローカルで正常に動作しています。しかし、GitHubからこの同じ関数を呼び出そうとしているとき、CORSに関するエラーが出ています。

だから、私は次のクライアントサイドコードをしようとしています:

var nws_lbl = "MSFT"; 
var news_url = 'https://www.google.com/finance/company_news?q='+nws_lbl+'&output=rss&callback=? '; 

$.ajax({ 
    url: news_url, 
    data: { 
     format: 'json' 
    }, 
    error: function() { 
     console.log("Error while getting data"); 
    }, 
    dataType: 'jsonp', 
    success: function (data) { 
     console.log(data); 
    } 
}); 

しかし、それを私は次のようなエラーになっています:ネットワークで

enter image description here

を、私は200を取得していますそれは応答が正しいことを意味します。

enter image description here

それは常にエラーになるだろう。私が何が欠けているか分からない。誰も助けることができますか?

答えて

1

あなたはこのように、CORS proxyを通して、あなたの要求を行うことにより、CORS制限を回避することができます

var val="MSFT", 
    proxyUrl = 'https://cors-anywhere.herokuapp.com/', 
    targetUrl = 'https://www.google.com/finance/company_news?q='+val+'&output=rss'; 

$.get(proxyUrl + targetUrl, 
    function (data) { 
    console.log(data); 
}); 

プロキシは、targetUrlに要求を行い、応答を取得し、Access-Control-Allow-Originレスポンスヘッダおよびその他のCORSを追加ヘッダーが必要な場合は、それを要求元のコードに渡します。 Access-Control-Allow-Originヘッダーが追加されたレスポンスがブラウザに表示されるので、ブラウザはフロントエンドコードが実際にレスポンスにアクセスできるようにします。


は限り問題の2番目のコードスニペットとして、私はそれはあなたのために動作しない理由はhttps://www.google.com/finance/company_newsがJSONPを返すためにどのような方法を持っていないということだと思います。したがって、formatcallback paramsは、あなたが望むものを引き起こさないように思われますが、JSONP以外のレスポンスを引き起こしています。コードは期待された形式ではないため解析できません。

+0

返信いただきありがとうございます。プロキシに関するあなたの解決策は働いた。しかし、2番目のコードスニペット、私はあなたが示唆した変更を行いましたが、それでも動作していません。 – Henry

関連する問題