技术开发 频道

.NET:如何用JS将百度搜索添加到网站?

  【IT168技术】如图1所示,相信大家都见过这种效果吧,怎么样把他引入到自己的网站里面呢?下面咱们一起来分析一下。

  使用Ie9的”开发工具“可可以轻松获取到,在你输入一个关键字时百度是怎么获取智能提示,就是相关的关键字的。一起来看一下吧

  大家可以清楚的看到在我们每次修改查询框时,百度就是发一个Ajax请求去调相应的数据

  地址就是:http://suggestion.baidu.com/su?wd=博客&p=3&cb=window.bdsug.sug&t=1324271669786

  大家不难看出来吧,wd=博客 这个博客 就是我输入的关键字,如果你想使用其它的关键字的话,只需要动太的修改wd的值就行了。

  这时大家一定会这样想,我们是不是只要发一个Get请求,只要每次在我们自己的网站上查询时动态的发一个Ajax请求去访问这个地址就行了呢?是的,但大家一个不要傻着去使用Http请求,因为这样的请求是从你的服务器发起的,当然百度肯定是会封你的。

  我们需要怎么做才能避免这个问题呢?

  那就只有一个方法了,使用Js,在客户端执行请求。因为Js是在客户端发起的,就算是百度封的话,那它封的是所有过量使用你网站的用户,相信百度不会傻到这点上吧。因为这样他们失去很多用户,所以这个方法应该是成立的。但是大家都知道Js是不能跨越访问的,而百度又不可能给你跨越的接口,或者是权限,我们应该怎么办呢?

  简单,我们上面也看到了,Baidu给我们的是一个Jsonp的数据格式,那么我们就可以直接使用Jsonp的方法去发起Ajax请求了,因为返回Jsop格式数据的JS是可以跨越访问的。

  大家一起来看下我的代码吧。

function FillUrls() {
    var strdomin
= $.trim($("#Text1").val());
    var qsData
= { 'wd': strdomin, 'p': '3', 'cb': 'ShowDiv', 't': '1324113456725' };
    $.ajax({
        async:
false,        url: "http://suggestion.baidu.com/su",
        type:
"GET",
        dataType:
'jsonp',
        jsonp: 'jsoncallback',
        data: qsData,
        timeout:
5000,
        success:
function (json) {
        },
        
error: function (xhr) {
            alert(xhr);
        }
    });
}

  代码很简单大家一看应该就明白了,我只解释一下这句吧

  var qsData = { 'wd': strdomin, 'p': '3', 'cb': 'ShowDiv', 't': '1324113456725' };

  wd是我们要输入的关键字。p 和就不用管了。

0
相关文章