2011-05-07 8 views
4

누군가이 jQuery bit.ly URL 단축키를 도와 주시겠습니까?jQuery URL bit.ly 단축키 도움을 받으십시오.

function shortenUrl(urlMatch) 
{ 
    var urlMatch = urlMatch 
    var username="myusername"; 
    var key = 'R_897b82b73568ea74fffbafa5a7b846d'; 
    $.ajax({ 
     url:"http://api.bit.ly/v3/shorten", 
     data:{longUrl:urlMatch,apiKey:key,login:username}, 
     dataType:"jsonp", 
     success:function(v) 
     { 
      var shortUrl=v.data.url; 
      return shortUrl; 
     } 
    }); 
} 

$('button').click(function(){ 
    var urlMatch = $(this).val(); 
    var newUrl = shortenUrl(urlMatch); 
    $('#menu').html(newUrl); 
}); 

을하고 난 스크립트를 실행할 때마다 콘솔에서이 코드를 반환합니다 :

jsonp1304728172115({ data : [ ] , "status_code" : 500, "status_txt": "missing_arg_uri"}) 

사람이 도와주세요 수를 다음과 같이 코드입니다.

+0

누락 된 매개 변수 "형식"다음에 세미콜론을 누락 되었습니까? 여기 내 버전의 코드입니다 : http://stackoverflow.com/questions/1771397/jquery-on-the-fly-url-shortener/7005673#7005673 –

답변

2

은 JSONP는 JSON 같은 것을, 당신은 데이터 인수가 제대로

data:{longUrl:urlMatch,apiKey:key,login:username},

을 형성하지 않는 것입니다 당신이 한 경우 :

data:"{'longUrl':" + urlMatch + ",'apiKey':" + key + ",'login':" + username + "}",

위의 코드는 테스트되지 않지만, 유사해야합니다. "JSON"

+0

Nick, jquery가이 번역을 처리합니다. – ariel

+0

아, 그래, jsonp 전화가 GET이기 때문에 당신이 맞다고 생각합니다. 게시 한 코드가 작동하지 않지만 실제 URL에 모든 변수를 포함시켜 작동 시켰습니다. – mcbeav

+0

아, 그게 실현 된 줄 몰랐어. 알아 둘만한. –

1

여기 : urlMatch = $(this).val();은 urlMatch에 단추 텍스트를 가져옵니다. 원하는 내용입니까?

또한 ajax()은 비동기 함수이기 때문에 콜백의 return은 함수에 도달하지 않습니다. 동 기화하려면 을 ajax() 매개 변수에 추가하십시오.

그리고 return도 작동하지 않으므로 결과를 전역 변수에 할당해야합니다.

그러나 가장 좋은 것은 return shortUrl;$('#menu').html(shortUrl);으로 바꾸는 것입니다. 그게 바로 당신이 찾고있는 결과입니다. 그리고 코드를 차단하고 일시적으로 브라우저를 잠그면 해당 브라우저에는 async:false이 필요하지 않습니다.

모두 실패하면 쿼리 문자열 자체에 매개 변수를 전달하십시오. take a look at this 할 수 있습니다.

+0

잘 실제 문제는 내가 거기에 오류 메시지가 반환됩니다 , 나는 이유에 관해서 알 수 없다. – mcbeav

+0

매개 변수로 전달되는 urlMatch의 내용을 확인하십시오. – ariel

+0

@mcbeav> 방금 설명서를 확인했고'async : false'를 jsonp와 사용할 수 없으므로 두 번째 옵션을 사용해야합니다. – ariel

0

당신은 "var에 urlMatch = urlMatch"