2011-11-16 2 views
2

Github API를 사용하여 Github에서 프로젝트 세부 정보를 자동으로 채우는 프로젝트 페이지 설정을 작성하려고합니다. gh-pages 분기에 HTML 및 JavaScript 파일을 넣었습니다. 하지만 jQuery.get()이 내게 어떤 데이터도 가져 오지 않습니다. Firebug에서 확인한 결과 요청이 전송되고 응답 코드는 200 OK이지만 수신 된 데이터는 표시되지 않습니다. API에는 문제가 없으므로 명령 줄 curl -i url이 예상대로 응답합니다.Github 페이지에서 jQuery.get 함수가 작동하지 않습니다.

<h3>Project</h3> 
<div id="project" name="sample-project"></div> 
<h3>Contributors</h3> 
<p id="collab"></p> 

그리고 내 자바 스크립트 코드는 다음과 같습니다 :

내 HTML은

$(document).ready(function(){ 
    var project = $('#project').attr('name'); 
    var baseurl = "https://api.github.com/"; 
    var url = baseurl + "repos/thamizha/"; 
    url += project; 
    url += "/collaborators"; 
    $.get(url, function(data){ 
      $('#collab').text(JSON.stringify(data)); 
     }); 
}); 

업데이트 : 나도이 시도. 아무 경고도.

$.getJSON(url, function(data){ 
$('#collab').html(JSON.stringify(data)); 
alert('Success'); 
}); 
+0

동일 출처 정책 .. 근무 – genesis

답변

1

나는이 시도하지 않은하지만 당신은 크로스 도메인 요청을 할 $.getJSON()을 사용할 수 있어야합니다 : http://api.jquery.com/jQuery.getJSON/ (체크 아웃 JSONP 섹션)에 URL 문자열을 포함하는 경우

을 "콜백 =? " (또는 서버 측 API 인 에 정의 된 것과 유사) 요청은 대신 JSONP로 처리됩니다. --UPDATE--

나는 테스트를 실행하고 JSONP의 사용을 시작하지 않고 크로스 도메인 요청을하려는 경우 다음 당신은 200 OK 상태 메시지하지만 실제를 받게됩니다 응답. 또한 JSONP에 대한 jQuery를에 AJAX 요청을 설정하는 코드를 발견 http://remysharp.com/2007/10/08/what-is-jsonp/

+0

합니다. 큰. 감사. –

1

아마 당신이 JSON API를 추가 해달라고 :

$.ajax({ 
    dataType: 'jsonp', 
    data: 'id=10', 
    jsonp: 'jsonp_callback', 
    url: 'http://myotherserver.com/getdata', 
    success: function() { 
    // do stuff 
    } 
}); 

이에서입니다! 그래서 JSON.stringify가 작동하지 않습니다!

그냥 가서 당신의 JS 코드 전에 추가 :

/* 
http://www.JSON.org/json2.js 
2011-02-23 

Public Domain. 

NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. 

See http://www.JSON.org/js.html 
*/ 
var JSON;if(!JSON){JSON={}}(function(){function f(n){return n<10?"0"+n:n}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(key){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(key){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;function quote(string){escapable.lastIndex=0;return escapable.test(string)?'"'+string.replace(escapable,function(a){var c=meta[a];return typeof c==="string"?c:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+string+'"'}function str(key,holder){var i,k,v,length,mind=gap,partial,value=holder[key];if(value&&typeof value==="object"&&typeof value.toJSON==="function"){value=value.toJSON(key)}if(typeof rep==="function"){value=rep.call(holder,key,value)}switch(typeof value){case"string":return quote(value);case"number":return isFinite(value)?String(value):"null";case"boolean":case"null":return String(value);case"object":if(!value){return"null"}gap+=indent;partial=[];if(Object.prototype.toString.apply(value)==="[object Array]"){length=value.length;for(i=0;i<length;i+=1){partial[i]=str(i,value)||"null"}v=partial.length===0?"[]":gap?"[\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"]":"["+partial.join(",")+"]";gap=mind;return v}if(rep&&typeof rep==="object"){length=rep.length;for(i=0;i<length;i+=1){if(typeof rep[i]==="string"){k=rep[i];v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}else{for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=str(k,value);if(v){partial.push(quote(k)+(gap?": ":":")+v)}}}}v=partial.length===0?"{}":gap?"{\n"+gap+partial.join(",\n"+gap)+"\n"+mind+"}":"{"+partial.join(",")+"}";gap=mind;return v}}if(typeof JSON.stringify!=="function"){JSON.stringify=function(value,replacer,space){var i;gap="";indent="";if(typeof space==="number"){for(i=0;i<space;i+=1){indent+=" "}}else{if(typeof space==="string"){indent=space}}rep=replacer;if(replacer&&typeof replacer!=="function"&&(typeof replacer!=="object"||typeof replacer.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":value})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){var j;function walk(holder,key){var k,v,value=holder[key];if(value&&typeof value==="object"){for(k in value){if(Object.prototype.hasOwnProperty.call(value,k)){v=walk(value,k);if(v!==undefined){value[k]=v}else{delete value[k]}}}}return reviver.call(holder,key,value)}text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}}()); 

를 JSON은 문제가되지 않는 경우, 그와 같은 데이터 유형을 고정하십시오 :

$.get(url, function(data){ 
      $('#collab').text(JSON.stringify(data)); 
     },'json'); 
+0

아니요. JSON.stringify는 문제가되지 않습니다. 받은 JSON 개체에 액세스하려고했습니다. 그것의 아무것도. Firebug는 정확한 헤더와 데이터를 보여줍니다. –

+0

@Arun : 내 편집을 확인하십시오! –

관련 문제