XMLHttpRequest在chrome下的Get请求方式

  因为英语学得不好,平常在学习中经常要用到百度翻译,就花了点时间写了个chrome插件。

  插件需要向百度的URL Api 发送GET请求,完整的的请求URL如下 :

    http://openapi.baidu.com/public/2.0/bmt/translate?client_id=YourApiKey&q=today%0Atomorrow&from=auto&to=auto
keyvalue描述
from 源语言语种:语言代码或auto 仅支持特定的语言组合,下面会单独进行说明
to 目标语言语种:语言代码或auto 仅支持特定的语言组合,下面会单独进行说明
client_id 开发者在百度开发者中心注册得到的授权API key 请阅读如何获取api keyhttp://developer.baidu.com/console#app/project
q 待翻译内容 该字段必须为UTF-8编码,并且以GET方式调用API时,需要进行urlencode编码。


 GET成功后返回的json数据如下
  {"from":"en","to":"zh","trans_result":[{"src":"today","dst":"\u4eca\u5929"}]}
from字段to字段翻译方向
auto auto 自动识别
zh en 中 -> 英
zh jp 中 -> 日

 

  GET后返回的错误json数据如下:
    {"error_code": "52001", "error_msg": "TIMEOUT", "from": "auto","to": "auto","query": "he's"}

字段含义约束默认值
error_code 错误码(52001,52002,52003,5004) 必须
error_msg 错误信息:

①TIMEOUT:超时(52001)【请调整文本字符长度】
②SYSTEM ERROR:翻译系统错误(52002)
③UNAUTHORIZED USER:未授权的用户(52003)【请检查是否将api key输入错误】
③msg:PARAM_FROM_TO_OR_Q_EMPTY:必填参数为空(5004)【from 或 to 或query 三个必填参数,请检查是否相关参数未填写完整】

必须
from 调用API时的输入参数 非必须 仅用来帮助发现错误原因
to 调用API时的输入参数 非必须 仅用来帮助发现错误原因
query 调用API时的输入参数 非必须 仅用来帮助发现错误原因
 

  GET代码片段如下:

//发送GET请求并接收返回的json格式数据   txtSource:待翻译内容    txtReturn:存放翻译后返回的内容   sourceLage:源语言  NewLage:目标语言
function GetTranslate(txtSource,txtReturn,sourceLage,NewLage)
{

  //拼接GET URL   待翻译内容要进行encodeURIComponent()编码
  var apiUrl = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=&q="+ encodeURIComponent(txtSource) +"&from="+         sourceLage +"&to="+ NewLage;

  //定义了XMLHttpRequest对象  定义时要判断属于什么浏览器 

  var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

  xmlHttp.open("get", apiUrl,true);      //打开连接

  //定义当请求发送后数据反馈回来时的处理函数
  xmlHttp.onreadystatechange = function ()
  {
    try
    {  //判断是否成功返回数据
      if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
      {
        objData = JSON.parse(xmlHttp.responseText);   //解析文本格式的json数据并赋给json对象

        txtReturn = ""; //清空
        try
        {
          for(var i =0;i < objData.trans_result.length; i ++)   //取出翻译完成的内容
          {
            txtReturn += objData.trans_result[i].dst+"\r\n";
          }
          sourceLage=objData.from;   //返回的源语言
          NewLage=objData.to;  //返回的目标语言

          return txtReturn;
        }
        catch(err)  //当API服务发生错误时返回的json数据  
        {
          txtReturn += objData.error_code+"\r\n"+objData.error_msg+"\r\n"+objData.query+"\r\n";

          return txtReturn;
        }
      }
    }
     catch(err)
     { alert(err);}
  }
  xmlHttp.send(null);//发送
}

 

百度开发者中心参考资料:http://developer.baidu.com/wiki/index.php?title=%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A1%A3%E9%A6%96%E9%A1%B5/%E7%99%BE%E5%BA%A6%E7%BF%BB%E8%AF%91/%E7%BF%BB%E8%AF%91API

posted @ 2015-05-05 01:03  伊晨  阅读(3741)  评论(0编辑  收藏  举报