由于,最近搞一个根据手机号码,查手机号码归属地这个功能,网上一搜手机号码归属地api,一查,网易竟然有这个api
?
http://www.yodao.com/smartresult-xml/search.s?type=mobile&q=手机号
举例:http://www.yodao.com/smartresult-xml/search.s?type=mobile&q=13615600386
返回xml:
<?xml version="1.0" encoding="gbk" ?> - <smartresult> - <product type="mobile"> <phonenum>13615600386</phonenum> <location>安徽 合肥</location> </product> </smartresult>
我只知道jquery能跨域请求,有两个方法,$.getScript()和$.getJSON(),但是网易的这个返回的是xml,要转换成json,就可以用$.getJSON()方法了,我是这样做的,登陆yahoo的yql查询语言控制台,网址:http://developer.yahoo.com/yql/console/中的输入框中输入
?
select * from xml where url="http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13615600386",选择转换程成json,然后test,然后就生成了json,如下:
?
?
{ ?"query": { ??"count": "1", ??"created": "2010-09-14T08:37:54Z", ??"lang": "en-US", ??"results": { ???"smartresult": { ????"product": { ?????"type": "mobile", ?????"phonenum": "13615600386", ?????"location": "安徽 合肥" ????} ???} ??} ?} }
就这样,然后jquery 跨域请求下面的这个地址:http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fwww.youdao.com%2Fsmartresult-xml%2Fsearch.s%3Ftype%3Dmobile%26q%3D13615600386%22&format=json&callback=?
?
就OK啦
直接上js代码:
?
$(function(){ $("#report-window").window({closed:true}); //查询手机归属地 $('#attribute').click(function(){ var q=parseInt($('#tel').text()); if(isNaN(q)) { $.messager.alert("提示信息","电话号码不存在或号码错误","info"); return false; } $(this).html("<img src='/Upload/Images/2010091923/054EE911D012806F.gif'/>"); $.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fwww.yodao.com%2Fsmartresult-xml%2Fsearch.s%3Ftype%3Dmobile%26q%3D"+q+"%22&format=json&callback=?",function(data){ var telphone=data.query.results.smartresult.product.location; $('#attribute').text(telphone); }) }) });
?
?
官方网站:
http://developer.yahoo.com/yql/
YQL(Yahoo!Query Language)可以说是一种类似SQL的查询语言,类似于包括XPath/XQuery, 微软的LINQ, 谷歌的GQL, Facebook的FQL, 以及Amazon SimpleDB的查询接口和CouchDB等大多数的现代查询语言。最主要是它的用法比较有前途。他查询的数据源可以是数据库的表结构,也可以是RSS,HTML, ATOM, JSON, XML等等形式的数据集。使用方法是通过发送HTTP请求到REST终端来进行查询,他的网站是"http://developer.yahoo.com/yql/console
主要是YQL就是一个对静态(必须滴)网页,或者RSS的远程链接进行分析得到你自己规定的XPATH的进行过滤后,返回给你xml格式或者json格式的远程连接:
?
这个用来解决rss格式的新闻解析,比如得到rss腾讯的新闻
select * from rss where url="http://news.qq.com/newsgn/rss_newsgn.xml" ? 然后通过yql控制台:转换成json,或者xml.就可以处理了 http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20rss%20where%20url%3D%22http%3A%2F%2Fnews.qq.com%2Fnewsgn%2Frss_newsgn.xml%22&format=json&callback= ? 关于更多的功能,需要日后继续发觉~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~