var httpAdapter;
//创建一个httpAdapter对象
function GethttpAdapterRequest()
{
//httpAdapter = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new httpAdapterRequest();
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
}
//以Get方式发送请求,默认Content-Type为"text/xml; charset=gb2312"
this.GetData = function(url)
{
httpAdapter = GethttpAdapterRequest();
httpAdapter.Open("GET",url, false);
httpAdapter.SetRequestHeader ("Content-Type","text/xml; charset=gb2312");
// httpAdapter.SetRequestHeader ("SOAPAction","http://tempuri.org/getStr");
httpAdapter.Send(context);
return httpAdapter;
}
//以POST方式发送请求,默认Content-Type为"application/x-www-form-urlencoded"
this.PostData = function (url,context)
{
httpAdapter = GethttpAdapterRequest();
httpAdapter.Open("POST",url, false);
httpAdapter.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
// httpAdapter.SetRequestHeader ("SOAPAction","http://tempuri.org/getStr");
httpAdapter.Send(context);
return httpAdapter;
}
this.GetDataInAsync = function (url,callbackMethod)
{
httpAdapter = GethttpAdapterRequest();
httpAdapter.Open("GET",url, true);
httpAdapter.SetRequestHeader ("Content-Type","text/xml; charset=gb2312");
// httpAdapter.SetRequestHeader ("SOAPAction","http://tempuri.org/getStr");
httpAdapter.Send(context);
httpAdapter.onreadystatechange = callbackMethod;
}
this.PostDataInAsync = function (url,context,callbackMethod)
{
httpAdapter = GethttpAdapterRequest();
httpAdapter.Open("POST",url, true);
httpAdapter.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
// httpAdapter.SetRequestHeader ("SOAPAction","http://tempuri.org/getStr");
httpAdapter.Send(context);
httpAdapter.onreadystatechange = callbackMethod;
}
//获取指定地址的域名
this.GetHost = function(url)
{
var host = "null";
var ArryHost=new Array();
if(typeof url == "undefined"|| null == url)
{
url = window.location.href;
}
var regex = /.*\:\/\/([^\/]*).*/;
var match = url.match(regex);
if(typeof match != "undefined" && null != match)
{
ArryHost = match[1].split(/:/);
host =ArryHost[0];
}
return host;
}
//获取当前地址的域名
this.GetLocalHost=function()
{
return GetHost(document.URL);
}
以前每次写AJAX请求总要写好几个JS函数,包括创建XMLHttpRequest对象、发送请求、成功后的处理函数和失败后的处理函数,下面的JS是把这些东西重构之后参数化的形式,然后放到一个单独的net.js里,后续使用只需引入这个JS,然后新建相应的对象和处理函数即可,可以直接拿来使用
var net = new Object();
net.READY_STATE_UNINITIALIZED = 0;
net.READY_STATE_LOADING = 1;
net.READY_STATE_LOADED = 2;
net.READY_STATE_INTERACTIVE = 3;
net.READY_STATE_COMPLETE = 4;
net.ContentLoader = function(url,onload,onerror,method,params,contentType)
{
this.req = null;
this.onload = onload;
this.onerror = (onerror) ? onerror : this.defaultError;
this.loadXMLDoc(url,method,params,contentType);
}
net.ContentLoader.prototype = {
onReadyState: function(){
var req = this.req;
var ready = req.readyState;
if(ready == net.READY_STATE_COMPLETE)
{
var httpStatus = req.status;
if(httpStatus == 200 || httpStatus == 0)
this.onload.call(this);
else
this.onerror.call(this);
}
},
defaultError: function(){
alert("error in fetching data!! readyState=="+this.req.readyState+"\n\nstatus="+this.req.status
+" \n\nheaders"+this.req.getAllResponseHeaders());
}
}
net.ContentLoader.prototype.loadXMLDoc = function(url,method,params,contentType){
if(!method) //如果没有传入method 参数值,则默认为GET
{
method = "GET";
}
if (!contentType && method=="POST"){
contentType="application/x-www-form-urlencoded;";
}
if(window.XMLHttpRequest)
{
this.req = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
this.req = new ActiveXObject("Microsoft.XMLHTTP");
}
if(this.req)
{
try{
var loader = this;
this.req.onreadystatechange = function(){
loader.onReadyState.call(loader);
}
this.req.open(method,url,true);
//POST方法需要设置的属性
if (contentType){
this.req.setRequestHeader("Content-Type", contentType);
}
this.req.send(params);
}catch(err)
{
this.onerror.call(this);
}
}
}
代码内容不在做过多解释,如果你对JS面向对象和prototype不太熟悉的话请查阅相关书籍,下面演示如何使用:
1. 把上述内容单独放到一个文件net.js(名称可自己定义)
2. 在要使用的JSP页面上引入这个net.js 即 <script src="net.js"> </script>
3. 发送请求GET方式
new net.ContentLoader("http://localhost:8080/CfgWeb/AppLogin.do",getMessage);
其中第一个参数是请求的后台程序地址,第二个参数是请求成功后的处理函数(自己定义)
后面的参数可省略,也可自己添加第三个参数(请求不成功的处理函数)
function getMessage()
{
alert(this.req.responseText); //简单的输出返回结果的字符串形式
alert(this.req.responseXML); //XML形式,后面就根据你的需要解析这个XML了
}
4. 发送POST请求
new net.ContentLoader("http://localhost:8080/CfgWeb/AppLogin.do?formAction=autoComplete",getMessage,null,"POST","&userName=wangwei&password=123" );
function getMessage()
{
alert(this.req.responseText); //简单的输出返回结果的字符串形式
alert(this.req.responseXML); //XML形式,后面就根据你的需要解析这个XML了
}
分享到:
相关推荐
React中使用axios发送请求的几种常用方法 目录 React中安装并引入axios依赖 使用axios进行GET请求 使用axios.get方式 使用axios(config {...}) 使用axios进行POST请求 使用axios.post 使用axios(config {...}) ...
本文分别给出了javascript发送请求到servlet的5种方式实例与jsp发送请求到servlet的6种方式实例
最近一段时间在学习前端向服务器发送数据和请求数据,下面总结了一下向服务器发送请求用get和post的几种不同请求方式: 1.用form表单的方法: (1)get方法 前端代码: <form action = /login method = GET> ...
这项技术主要涉及到向目标服务器发送请求,获取HTML页面内容,然后通过解析HTML来提取所需的数据。Python爬虫在数据收集、网络监测、自动化测试等领域有着广泛的应用。 Python爬虫的资源介绍可以从以下几个方面进行...
下面咱们来看一下比较流行的几种方式。 在开始之前,请先在自己的计算机上安装最新版的node.js和npm。 HTTP – 标准库 首先是标准库中默认的 HTTP 模块。这个模块无需安装依赖外部即可使用,做到了真正的即插即用。...
跨域请求资源的几种方式,具体如下: 1.什么是跨域 2.JSONP 3.proxy代理 4.cors 5.xdr 由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。具体可以查看下表 ...
随机生成1到100随机数,使用JavaScript实现,其中sortArr方法里的参数,传几就会生成几个随机数,例如传2就会生成2个随机数。 JavaScript是一种编程语言,主要用于增强网页交互性。它是一种弱类型脚本语言,可以在...
主要介绍了解决IDEA JSP没有代码提示问题的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
浏览器的同源策略并不能阻止CSRF攻击,因为浏览器不会停止js发送请求到服务端,只是在必要的时候拦截了响应的内容。或者说浏览器收到响应之前它不知道该不该拒绝。 攻击过程 用户登陆A网站后,攻击者自己开发一个B...
然后,你可以使用Python来生成Three.js所需的JSON数据或场景描述,并通过AJAX请求或其他方式将这些数据发送到前端JavaScript代码中。 使用Jupyter Notebook和IPython.display: 如果你正在使用Jupyter Notebook进行...
主要介绍了原生JavaScript实现Ajax的几种方法,感兴趣的小伙伴们可以参考一下
使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的??,研究了一下,有几种解决办法。 我使用的是sping-web-3.2.2,jar 方法一: 在...
在node爬虫方面,我也是个新人,这篇文章主要是给大家分享几种实现node 爬虫的方式。第一种方式,采用node,js中的 superagent+request + cheerio。cheerio是必须的,它相当于node版的jQuery,用过jQuery的同学会非常...
要做到这一点,有几种方法可以做到 直接在存储库文件中进行拉取请求进行修改 在GitHub上的存储库中,转到app.js文件,然后单击“编辑”图标。 进行更改后,在提交上添加描述并执行提交。 此时,Github向您展示了它...
DWR 自动将DOM、DOM4J、JDOM和XOM转换成DOM树,前面这几种类型都仅仅返回Document,Element,Node.DWR会自动将这些转换成浏览器DOM对象.通常在启动JDOM Converter时会有一个提示信息,除非你想采用JDOMconverter否则可以...
这是一个简单的在Android客户端连接Asp.Net进行上传或下载的示例,在Android客户端以psot形式发送请求到Asp.Net服务器端,服务器端接收到请求参数后判断是上传还是下载,并进行相应处理。 示例中传输的数据未实体类...
本文实例讲述了不使用XMLHttpRequest对象实现Ajax效果的方法。分享给大家供大家参考,具体如下: 前言: 我以前接触Ajax的时候,只是用Jquery的...我总结了几种方法,会有实例来说明如何使用的。 方法: (1)利用204
sails-hook-apianalytics 用于记录详细请求元数据和监控 API... 或者,您可以通过配置sails.config.apianalytics以几种不同的方式自定义此挂钩。 例如,您可以创建config/apianalytics.js : // `config/apianalyti
该段代码会向服务器发送以下数据(省略不相关数据)...//图片二进制数据区别细心的同学看了上面的两个数据报应该已经观察到一些区别了,两者的区别大概有以下几种:*