2016-08-17 11 views
-2

で働いていません。これはIEで完全に動作します。私は、ブラウザのリクエストのリンクを貼り付けた場合、私はJSON応答を得るかが、私はこのコードを実行するとき。私はYahooやGoogleのリクエストに対して何の返信もしません。 IEでうまく動作します。ヤフー/グーグル・ファイナンスJSONは、これは私のJSコードであるクロム

//var url1 = "http://finance.google.com/finance/info?client=ig&q=AAPL"; 
var yah_url1 = 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20("'; 
var yah_url2 = '")%0A%09%09&format=json&diagnostics=true&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback='; 

function btn_stocks_click() 
{ 
    var div_table = document.getElementById("div_stock_table"); 
    var btn_stocks = document.getElementById("btn_stocks"); 
    div_table.style.display = (div_table.style.display == 'none') ? 'block' : 'none'; 
    btn_stocks.value = (btn_stocks.value == "Show Stocks") ? "Hide Stocks" : "Show Stocks"; 
    getJSONReply("AAPL"); 
} 

function getJSONReply() 
{ 
    var req = yah_url1.concat(arguments[0]); 
    var url_req = req.concat(yah_url2); 
    alert(url_req); 
    var xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() 
    { 
     if (xhr.readyState == 4 && xhr.status == 200) 
     { 
      alert(xhr.responseText.length); 
     } 
    } 
    xhr.open('GET', url_req, true); 
    xhr.setRequestHeader('Access-Control-Allow-Headers', '*'); 
    xhr.setRequestHeader('Access-Control-Allow-Origin', '*'); 
    xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET'); 
    xhr.addEventListener("load", reqListener); 
    xhr.send(); 
} 

function reqListener() // This was coded for Google Finance reply as it had other characters apart from reply. 
{ 
    var sub1 = this.responseText.substring(5,this.responseText.length); 
    var sub2 = sub1.substring(0, sub1.length - 2); 
    parse_JSON(sub2); 
} 

function parse_JSON() 
{ 
    var response = arguments[0]; 
    alert(arguments[0]); 
} 

これはXMLHttpRequestのは、プリフライトリクエストにhttp://query.yahooapis.com/v1/public/yql?q=select%20%2a%20from%20yahoo.finance.quotes%20where%20symbol%20in%20%28%22AAPL%22%29%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=jsonレスポンスをロードすることはできません

アクセス制御チェックを通過しないクロームデバッガに表示されたばかりのエラーです:いいえ「アクセス制御 - 許可 - 起源」ヘッダが上に存在します要求されたリソースしたがって、原点「ヌル」はアクセスが許可されません。

+0

のXMLHttpRequestが 'http://query.yahooapis.com/v1/public/yql?q=selectをロードできません変換するAJAXを使用して、このメソッドを呼び出し、WebClientを使用して、代替ソリューションを持っています%20%2Aの%20from%の20yahoo.fina ...プリフライト要求に対して22%、29%0A%09%09&ENV =のhttp%3A%2F%2Fdatatables.org%2Falltables.env&フォーマット= json.' 応答は、アクセス制御を渡しませんチェック:いいえ「アクセス制御 - 許可 - 起源」ヘッダは、要求されたリソース上に存在します。したがって、原点「ヌル」はアクセスが許可されません。 –

+0

、あなたの質問にそれをしてください置きます。引用形式を使用してください。 – isherwood

答えて

0

I通貨

 public JsonResult convertCurrencyUsingGoogle(decimal amount, string from, string to) 
     { 
      try 
      { 
       WebClient WebClient = new WebClient(); 
       from = from.ToUpper(); 
       to = to.ToUpper(); 

       try 
       { 

        var CurrencyQuery = new StringBuilder(); 
        CurrencyQuery.Append("https://www.google.com/finance/converter"); 
        CurrencyQuery.AppendFormat("?a={0}", amount); 
        CurrencyQuery.AppendFormat("&from={0}", from); 
        CurrencyQuery.AppendFormat("&to={0}", to); 

        string response = WebClient.DownloadString(CurrencyQuery.ToString()); //response returns as page 
        var responsestring = response.Split(new string[] { "class=bld>" }, StringSplitOptions.None); // get element which contains money 
        var finalresponse = responsestring[1].Split(new string[] { to }, StringSplitOptions.None); // split curreny type 

        return Json(String.Format("{0:G29}", Convert.ToDecimal(finalresponse[0].Trim()))); //return currency 
       } 
       catch (Exception e) 
       { 
        return Json("error"); 
       } 
      } 
      catch (Exception e) 
      { 
       return Json("error"); 
      } 
     } 
+0

前とは違って、コメントで理由を述べます – Arjun

関連する問題