2016-07-02 89 views
1

我試圖從https://twitter.com/i/search/timeline?f=realtime&q=blogger&src=typdAJAX調用JSON請求

對於我曾嘗試以下跨域請求,但我得到的錯誤提示JSON數據:/

$(document).ready(function() { 
    var contentType = "application/x-www-form-urlencoded; charset=utf-8"; 

    if (window.XDomainRequest) { 
     contentType = "text/plain"; 
    } 

    $.ajax({ 
     type: 'GET', 
     url: 'https://twitter.com/i/search/timeline?f=realtime&q=blogger&src=typd', 
     dataType: 'jsonp', 
     contentType: contentType, 
     success: function(data) { 
      alert("Data from Server" + JSON.stringify(data)); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert("You can not send Cross Domain AJAX requests: " + errorThrown); 
     } 
    }); 
}); 
+0

什麼錯誤?你能發佈錯誤嗎? – MHS

+0

它只是出現在我的消息「無法發送跨域AJAX請求」 – user3703404

+0

您是否驗證了API支持JSON-P?對它的支持不是自動的,也不是保證的。服務器必須實現在響應中爲* Padding *使用'callback'。 –

回答

0

你不能做跨域請求,直到服務器允許您執行。如果他們有一個,你應該通常使用他們的API憑證。

另一種解決方案是將數據存儲在服務器上(這確實給Twitter上捲曲的請求,沒有CORS問題),你做你的服務器進行Ajax調用。但取決於國家,你暴露自己的法律問題。

+0

我想只使用jquery/javascript來獲取這些數據。無法使用相同的 – user3703404

+0

的PHP,您無法執行請求客戶端。服務器端你可以編寫nodejs http請求並用cheeriojs(jquery服務器端的一個版本)解析它。 –

0

好像這個副本:

jQuery AJAX cross domain

你將不得不使用JSONP。

編輯:

這可能不適用於OP,因爲他試圖訪問Twitter。但是,如果您偶然發現並試圖在您控制的服務器上使用相同的域或兩個域,請檢查一下。如果不是皮埃爾是對的。

你很可能將不得不找得到這些數據的另一種方法。您可以嘗試使用服務器端語言編寫它,並使用AJAX調用該文件並檢索數據。對用戶來說,它看起來是一樣的。

+0

OP正試圖使用​​JSON-P已經 - dataType:'jsonp'。 –

+0

哎呀!錯過了。感謝您的高舉。不理我。如果其他人有類似的問題,首先檢查。 –

+0

他正試圖做一個推特的請求,它不會工作。 –