通过jqueryajax调用创建TinyURL

通过jqueryajax调用创建TinyURL,jquery,ajax,tinyurl,Jquery,Ajax,Tinyurl,我已经看了很多类似的问题,但似乎找不到一个简单的电话 function TweetThis(url) { $.ajax({ url: "http://tinyurl.com/api-create.php?url=" + url, cache: false, success: function(data){ alert(data); } }); } 基本上,我想用一个Ajax调用和一个长URL调用TinyURL,然后返

我已经看了很多类似的问题,但似乎找不到一个简单的电话

function TweetThis(url)
{
    $.ajax({
      url: "http://tinyurl.com/api-create.php?url=" + url,
      cache: false,
      success: function(data){
       alert(data);
      }
    });
}
基本上,我想用一个Ajax调用和一个长URL调用TinyURL,然后返回缩短的URL。。成功永远不会触发,但当我检查它构建的URL时,它在浏览器中返回良好

在Firebug中看,它没有显示返回的响应。。我遗漏了什么?

在Safari 4(Mac OS X)中,它工作正常。
在Firefox3(Mac OS X)中,它起到了一半的作用-弹出一个
警报
对话框,但它是空的(因此
success
正在启动,但没有返回任何数据)。
这似乎是Firefox的一个bug。

应该可以

function TweetThis(url){
    $.get(
        "http://tinyurl.com/api-create.php",
        {url: url},
        function(data){
            alert(data);
        }
    );
}

您是否尝试将
&callback=?
添加到URL的末尾?这可能是浏览器安全性的阻碍。

由于限制,尝试发出常规AJAX请求是不可能的。 幸运的是,这是一种礼貌

以下是工作代码:

function TweetThis(bigurl)
{
    $.getJSON(
      "http://json-tinyurl.appspot.com/?&callback=?",
      {url: bigurl},
      function(data){
       alert(data.tinyurl);
      }
    );
}
试试这个

剧本:

<script language="javascript" type="text/javascript">
<!-- 
var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser is very old!");
            }
        }
    }

//Browser Support Code
function ajaxGetTiny(){

    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            var ajaxDisplay = document.getElementById('ajaxDisplayTiny');
            ajaxDisplay.innerHTML = ajaxRequest.responseText;

        }
    }
        var long_url = document.getElementById('long_url').value;


    var queryString = "?long_url=" + long_url;
    ajaxRequest.open("GET", "getTiny.php" + queryString, true);
    ajaxRequest.send(null); 

}

function ClipBoard() 
{
holdtext.innerText = copytext.innerText;
Copied = holdtext.createTextRange();
Copied.execCommand("Copy");
}
//-->

</script>

现在填写表格:

<form name='myForm'>
      <input name="long_url" type="text" class="main" size="90">
      <br>
        <input type='button' class="Buttons" onclick='ajaxGetTiny();' value='GET TINY' />
      </form>


现在,帮助文件:

<? 
//gets the data from a URL  
function get_tiny_url($url)  {  
    $ch = curl_init();  
    $timeout = 5;  
    curl_setopt($ch,CURLOPT_URL,'http://tinyurl.com/api-create.php?url='.$url);  
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);  
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);  
    $data = curl_exec($ch);  
    curl_close($ch);  
    return $data;  
}

//test it out!
$new_url = get_tiny_url($_GET['long_url']);

?>
<link href="../styles.css" rel="stylesheet" type="text/css" />


<table width="100%" border="0" class="main">
<tr>
            <td width="5%" align="left" valign="middle"><strong>longURL:</strong></td>
            <td width="95%" valign="middle" class="ArticleBody"><? echo $_GET['long_url']; ?></td>
  </tr>
          <tr>
            <td align="left" valign="middle"><strong>tinyURL:</strong></td>
            <td valign="middle" class="ArticleBody"><SPAN ID="copytext"><? echo $new_url; ?></SPAN> 
            <TEXTAREA ID="holdtext" STYLE="display:none;"></TEXTAREA><br>
            <BUTTON onClick="ClipBoard();">Copy to Clipboard</BUTTON>
</td>
  </tr>
        </table>

longURL:
tinyURL:

复制到剪贴板
从未使用过,但可能值得一看。

如果您能够向服务器端添加逻辑,那么可以通过安装一个“垫片”或网关脚本来避免对JSONP的要求,该脚本可以执行您想要的操作,并返回一个格式化的JSON字符串

通过调用tinyurl.com的API生成tinyurl的脚本的一些示例:


任何人都可以使用该代码并自行托管,以允许网页访问tinyurl服务。同样的方法也适用于任何无法通过JSONP访问的服务。

不适用于Windows上的FF3 for me。。。我认为这可能是TinyURL的问题,但尝试了另一个具有相同结果的提供商;此appspot应用程序受请求限制。它在一般情况下可能不可用。否。这不起作用,因为同一原产地政策。这取决于他们是否正确设置了服务器:@SeanJA您的链接已断开。并且您的代码片段不起作用(“不允许使用源代码”)。@mhenry1384更新链接(从维基百科页面底部):