ajax图片加载

var img = $("<img />");
img.load(function(){
  img.appendTo(con.empty());
  setPosition();
});
img.attr("src",imgurl);

con比如是个容器,以上代码可以实现ajax效果,开始在con中放一个动画图片,等图加载完了自然会替换掉哦

,

javascript创建一个动态元素

我没有其他办法 ,还是创建个隐藏框架来操作

var frmObj = document.createElement("iframe");
frmObj.id= "myfrm";
frmObj.name = "myfrm";
frmObj.width =500 ;
frmObj.height =300;
frmObj.frameborder = 0;
frmObj.src="http://www.baidu.com/";
document.body.appendChild(frmObj);

然后用定时器检查这个框架的处理状态。如果想实现进度,得与远程服务器配合,远程服务器必须动态的写信息到一个xml/txt文件中,本地再不断的读取即可。

, , , ,

利用xmlhttp远程发送二进制数据上传的类

详细代码见内页,功能就是上传图片,这样就可以在自己程序中调用别人地址上传了。

, ,

xmlhttp提交数据函数

这个函数经常要用到,所以我再次写下来自己用吧

Function xmlHttp(byval urlStr,byval pData)
	On Error Resume Next
	dim http,postype
	If InStr(urlstr,"?")=0 Then urlstr=urlstr&"?x44="&Timer() Else urlstr=urlstr&"&x44=" &Timer()
	If pData="" Then postype="GET" Else postype="POST"
	set http=CreateObject("WinHttp.WinHttpRequest.5.1")
	http.SetTimeouts 10000,10000,10000,10000
	http.Option(6)=0
	http.open postype,urlStr,False
	If postype="POST" Then
		http.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
	End if
	http.Send (pData)
	xmlHttp = http.ResponseText
	set http=Nothing
end function
 
Function BytesToBstr(body,cchar)
  Dim objstream
  Set objstream = CreateObject("adodb.stream")
  objstream.Type = 1
  objstream.Mode = 3
  objstream.Open
  objstream.write body
  objstream.Position = 0
  objstream.Type = 2
  objstream.CharSet = cchar
  BytesToBstr = objstream.ReadText
  objstream.Close
  Set objstream = Nothing
End Function

, ,

彻底搞懂ajax乱码,javascript读取中文乱码

使用ajax乱码我相信谁都遇到过,而且头痛。我们一般都有自己习惯,比如两个网页都是用的gb2312,那就简单,不要去用什么转换函数,关键是后面这一点看清楚。网上讲的真是害人,可以把你说晕,乱转换。即使是两页的编码不一样,也不需要转换,不要在一页中混杂不同编码的字符就行了。

'我们在html页面使用js发送请求时要写明编码:
setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=gb2312");
'然后ASP页面中也要设置http头,不要以为保存成统一编码就行了,试试吧不会乱了。
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Response.Charset="GB2312"%>
'随便说一下,要用responseText 而不是 body ,body是生成的二进制编码,js中无法处理。

最后再简单的总结,假设我有两个网页,一个是html页,负责ajax方式调用asp页的内容。一个是asp页。asp页负责显示一些中文。
如果两个都是gb2312,那好办,html中setrequesthead中写明gb2312,asp页中加上response.charset=gb2312就可以了。
如果html页是gb2312,asp页是utf8,那么html中head还是设置为gb2312跟本文件编码一致,asp网页保持utf8格式的文本即可。
如果html页是gb2312,asp页是utf8,asp页又去调用了gb2312的网页呢,按上面说的必须保证asp显示的为utf8,也很简单,读取过来的文字虽然为gb2312,不是有个函数可以直接转吗 BytesToBstr(xmlhttp.responsebody,gb2312) 这样就行了。

, , , ,

用ASP模拟信产部登录修改资料

学到的还是要多用才行,重复的简单的应用你也会发现新的,要说远程用xmlhttp读取发送信息谁不会,但就是用得少。当我最近去写这个程序时觉得很简单了,无非就是构造再发送,比如中途有302跳转的也没必要再去读cookie了。
需要注意的是cookie自始自终是读取验证码时得到的那个,调用所有页面都要设置cookie,还有身份信息等,需要注意的备案资料修改这类操作,是要先post一些数据到dwr程序中,他会返回sessionid和scriptid,还有域名的id在前一个页的js中有,把这些一齐发送了才能调用下一个显示页面。
现在我用一页基本上把自动修改备案网站主办资料搞定了。要模拟需要自行在本地建立与信产网同样的目录,还有同样的文件名,设置用asp来解析,然后自己构建js,呵呵。为了不至于每次都重复登录,可以用cookies来记录上面提到的cookie值,用一个session来标识该用户是否已经登录成功。  祝你成功

, , , , ,

关于xmlhttp方式模拟登录问题

今天没事又弄了下远程调用网页文件。我用的是asp来模拟登录,然后拉取需要的信息。
后台登录一直不成功,普通用户后台是可以成功的,最后才知道原因,写这里分享下以免走弯路。
如果服务端用了Cookies验证,那直接POST登录信息,然后再调其他页就可以。

而超管后台往往用的是Session验证,所以直接POST登录信息后,虽然能返回正确,但接着去拉取其他页面会发生错误,原因是拉取时没有设置Cookie头。我们应该拉取一下后台,用 ajaxHttp.getResponseHeader("Set-Cookie") 得到COOKIES值,然后POST时也将此信息写进去,以后在拉取其他页时也要写。 ajaxHttp.SetRequestHeader "Cookie",reCookie
服务器上只要session不掉,你以后直接发送这个cookies就可以保持连接,而不必POST登录信息了。
asp的cookies形式如:ASPSESSIONIDSACCQQDR=DLHNPNPCJFJNGJIFHCMNHGCL 但.net的就不同了哦。

, ,

用程序方式查询域名是否备案的例子

演示地址见:http://www.suntw.com/demo/mii.asp

主要利用xmlhttp功能去调用信产部备案查询,不知道你成功过没有,我可是弄了很久。
难点在于验证码那儿,还有COOKIES那儿,并不是直接POST数据就能成功,需要源码的请跟贴。

, , ,

远程POST数据的问题

限于篇幅,详细代码在内页,这次我遇到一个郁闷的问题,老是提交不了数据,后来才发现少写了一句命令。
当我把这个命令加上时,有的电脑又不成功,原来发现我用的组件并不是所有电脑都支持。
虽然用xmlhttp方式远程提交/拉取数据我们经常在用,但有些细节还是经常忽略,写下备忘了。

, ,

友情链接自动提前工具

这个工具没有技术含量的,原理是用的WinHttp.WinHttpRequest.5.1组件来POST数据,实在自动登录自动访问链接,达到提前友情链接的目的,需要源码的发邮件给我。
这个代码说来很通用的,比如提交白名单,每次要去登录,要去输那么多主机信息多麻烦,用这程序再带上必要的参数一键就可以提交上去。如果加了验证码的话要手工输入一下才行了。

, ,