摘要:儘管公開數據並設置了回調以啓用跨域JSON,但仍然獲得空響應。請幫忙!facebook圖api ajax XMLHttpRequest - 無效果?
類似的問題已經在這裏找到答案
Using the new facebook graph api, ajax calls returns null (empty)
,但我不使用jQuery和試圖適應我的代碼,以反映這個問題的答案。
我想用一個簡單的例子來測試一個簡單的xmlhttprequest處理程序。我在我的網頁鏈接:
<a href='javascript:loadXMLDoc(\"https://graph.facebook.com/btaylor?callback=methodname\",\"\")'>AJAX LINK</a>
回調=方法名參數,從而實現跨域JSON
我使用的是通用的XMLHttpRequest建設者:
var req; // Request object
function loadXMLDoc(url,params){
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", params.length);
req.setRequestHeader("Connection", "close");
req.send(params);
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.setRequestHeader("Content-length", params.length);
req.setRequestHeader("Connection", "close");
req.send(params);
}
}
}
然後我有一個處理程序:
function processReqChange(){
if (req.readyState == 4) {
if (req.status == 200) {
alert("Done");
} else {
//alert("There was a problem retrieving the data:\n" + req.statusText);
alert("Status Code = "+req.status);
alert("There was a problem retrieving the data:\n");
alert("Failed : object = "+req);
alert(req.responseXML);
alert("Failed : response = "+req.responseText);
alert("Failed : status = "+req.statusText);
}
}else{
}
}
但我一直得到一個空響應(statusText OK,狀態碼0)。有任何想法嗎?
在此先感謝
謝謝邁克。你說得對,我沒有把我的腦袋繞過JSONP。腳本標記的方法似乎IMO有點哈克,所以平衡我已決定採取與jquery暴跌。一直推遲它,但這裏去... – Derek 2010-11-30 19:56:46