通过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更新链接(从维基百科页面底部):