ajax 跨域访问问题

来源:互联网 发布:淘宝客服热线 编辑:程序博客网 时间:2024/06/09 19:08

这两天写一个sina 微博短url 例子。其中利用ajax 跨域访问问题。
成功代码如下:

[html] view plaincopy
  1. <html lang="zh" xml:lang="zh" xmlns="http://www.w3.org/1999/xhtml"><head>   
  2.     <meta content="text/html; charset=utf-8" http-equiv="Content-Type">   
  3.     <meta charset="utf-8">   
  4.     <title>Tools</title>   
  5. <head>  
  6. <script type="text/javascript" src="./jquery-1.6.4.min.js"></script>  
  7. <script type="text/javascript">  
  8. function short(){  
  9.     var url_long=$("#url_long").val();  
  10.     var source=$("#source").val();  
  11.     var request = "http://api.t.sina.com.cn/short_url/shorten.json?url_long="+url_long+"&source="+source+"&callback=?";  
  12.     //&callback=? 必须加上,虽然可以返回数据但success:function 不会调用。jquery api 文档上有说明。  
  13.     $.ajax({  
  14.         dataType: "jsonp",//跨域访问 dataType 必须是jsonp 类型。  
  15.         url: request,  
  16.         type:"GET",  
  17.         jsonp:"callbackparam",  
  18.         jsonpCallback:"success",  
  19.         success: function(response) {  
  20.             $("#shortUrl").html("短地址为:"+response[0].url_short);  
  21.         },  
  22.          error: function(XMLHttpRequest, textStatus, errorThrown) {  
  23.             alert("status"+XMLHttpRequest.status);  
  24.             alert("readyState"+XMLHttpRequest.readyState);  
  25.             alert("textstatus"+textStatus);  
  26.             alert(errorThrown);  
  27.         }  
  28.     });  
  29.     return false;  
  30. }  
  31. </script>  
  32. </head>   
  33. <body >   
  34.   <div>   
  35.   欢迎使用地址转写工具,请输入链接<br><br>  
  36. <form>   
  37. 物品链接:<input type="string" name="url_long" id="url_long" /><br>   
  38. APIkey     <input type="string" name="source" value="1681459862" id="source" /><br><br>   
  39. <input type="button" name="submit" value="提交" onclick="short()" />   
  40. </form>   
  41. </div>  
  42. <div id="shortUrl">  
  43. </div>   
  44. </body>  
注意两点:
1. datatype 必须为jsonp
2.callback=? 必须加上,开始没加上success:function 一直没有响应(返回了数据)。
3.charset="utf-8" 为utf-8 ,文件的保存格式也应该是encoding utf-8 。
如下图所示:

刚开始format 选成了Encode in ANSI  打开网页时出现乱码。
程序运行结果为:


如果采用form 表单提交,不需考虑跨域问题。
代码如下:
[html] view plaincopy
  1. <html lang="zh" xml:lang="zh" xmlns="http://www.w3.org/1999/xhtml"><head>   
  2.     <meta content="text/html; charset=utf-8" http-equiv="Content-Type">   
  3.     <meta charset="utf-8">   
  4.    
  5.     <title>Tools</title>   
  6.     
  7. </head>   
  8. <body >   
  9.   <div>   
  10.  欢迎使用地址转写工具,请输入链接<br><br>   
  11. <form action="http://api.t.sina.com.cn/short_url/shorten.json" method="get">   
  12. 物品链接:<input type="string" name="url_long" /><br>   
  13.    
  14.      APIkey     <input type="string" name="source" value="1681459862" /><br><br>   
  15. <input type="submit" name="submit" value="提交" />   
  16. </form>   
  17. </div>   
  18. </body> 
0 0
原创粉丝点击