纯手写AJAX

tjzero_sapce 2009-05-06 11:48:08
扩展别人的一个程序,是在JBuilder上做的, 现在需要使用到AJAX 技术, 我以前一直都是在MyEclipse上使用DWR来实现的, 但是在JBuilder中不知道该怎么使用, 干脆手写AJAX了。

我一个页面 , text输入了车辆的牌照号, 在onblur() 的情况下 自动去数据库中获取公司名称 , 业务逻辑部分的都写好了 , 客户端写成这样了
function createXmlHttpRequest(){
if(window.ActiveXObject){
return new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
return new XMLHttpRequest();
}
}
function getCompanyName(object){
var carNumber = object.value ;
alert(carNumber);
/**发动请求到服务器*/
//请求字符串
var url = "/xdoa/ajaxbookinginfoservlet?carNumber ="+carNumber;
//创建XMLHttpRequest组件
xmlHttpRequest = createXmlHttpRequest();
// 设置回调函数
xmlHttpRequest.onreadystatechange = callback ;
// 初始化 XmlHttpRequest 组件
xmlHttpRequest.open("GET",url,true);
//发送请求
xmlHttpRequest.send(null);
}
function callback(){
if( xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200 ){
var b = xmlHttpRequest.responseXML.getElementsByTagName("result").firstChild.data;
document.getElementById("companyName").value = b ;
}
}


Servlet中是这样写的:
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
String carNumber = new String(request.getParameter("carNumber").getBytes("ISO-8859-1"),"GBK");
BookingInformationBean object = new BookingInformationBean();
BookingInformationService objectService = new BookingInformationService();
String companyName = objectService.getCompanyByCarNumber(carNumber);
response.setCharacterEncoding("UTF-8");
response.setContentType("text/xml;");
response.setHeader("Cache-Control", "no-cache");
out.println("<response>");
out.println("<result>" + companyName + "</result>");
out.println("</response>");
out.close();


没有成功, js也没报错 ,手写AJAX我也不会 , 这完全是"依葫芦画瓢" .
...全文
577 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
lijinze12 2010-06-09
  • 打赏
  • 举报
回复
我的用法不一样:
var b = xmlHttpRequest.responseXML.getElementsByTagName("result")[0].childNodes[0].nodeValue;
tq_qiang 2009-05-08
  • 打赏
  • 举报
回复
回帖是一种美德!每天回帖即可获得 10 分可用分!

厉害啊,我都不会。
tjzero_sapce 2009-05-07
  • 打赏
  • 举报
回复
Serlvet 中我这样获得最终的数据
String companyName = objectService.getCompanyByCarNumber(carNumber);


客户端这样写可行么?
document.getElementById("companyName").value = xmlHttpRequest.responseTest;     


输出的是 “undefined” 是我这样根本就不应该呢 还是哪里有差错?
tjzero_sapce 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 emon123 的回复:]
把return new ActiveXObject("Microsoft.XMLHTTP");
改成return new ActiveXObject("Msxml2.XMLHTTP.3.0");
试试看!

[/Quote]

没有效果 看到浏览器报错说

var b = xmlHttpRequest.responseXML.getElementsByTagName('result')[0].firstChild.data;


这一行 缺少对象
emon123 2009-05-07
  • 打赏
  • 举报
回复
把return new ActiveXObject("Microsoft.XMLHTTP");
改成return new ActiveXObject("Msxml2.XMLHTTP.3.0");
试试看!
tjzero_sapce 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 siyanfighting 的回复:]
跟踪各种跟踪

xmlHttpRequest.open("GET",url,true);

alert(url);
//发送请求
xmlHttpRequest.send(null);

servlet里设断点跟踪

返回之后callback里alert跟踪



[/Quote]

function createXmlHttpRequest()
xmlHttpRequest.open("GET",url,true);
alert(url);
//发送请求
xmlHttpRequest.send(null);


中设置了断点 都很正常, 但是在
function callback(){
if( xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200 ){
var b = xmlHttpRequest.responseXML.getElementsByTagName("result").firstChild.data;
alert(b);
document.getElementById("companyName").value = b ;
}
}


就没有弹出提示框
j2eeoriented 2009-05-07
  • 打赏
  • 举报
回复
js 就是麻烦
tjzero_sapce 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mjlovewen 的回复:]
我也是初学者,我每一次碰到问题我都会从开始表单那里一步一步的调试,看一下进行到那里就停止了,JAVASCRIPT就用alert弹出,SERVLET里面就用OUT给打印出来。。
[/Quote]

是个很好的方法, 我现在连这个AJAX该怎么写都不知道。。。
所以还到不了调试这一步
tjzero_sapce 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lhzx_zjg 的回复:]
xmlHttpRequest 需要定义成全局变量
[/Quote]

您这句说对了 我的xmlHttpRequest 不是全局变量
ZhaoHuiZiXin 2009-05-07
  • 打赏
  • 举报
回复
好像在获取响应xml文本是有错误: var b = xmlHttpRequest.responseXML.getElementsByTagName("result").firstChild.data;
应该为: var b = xmlHttpRequest.responseXML.getElementsByTagName("result")[0].firstChild.data;

dm520 2009-05-07
  • 打赏
  • 举报
回复
用些框架会方便点,
tjzero_sapce 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 MagicError 的回复:]
貌似我以前也写过,现在都忘记了 。。。
[/Quote]

大哥 想想啊 您这样跟没说么区别啊。。。。。。。。。
MagicError 2009-05-07
  • 打赏
  • 举报
回复
貌似我以前也写过,现在都忘记了 。。。
耶律火柴 2009-05-06
  • 打赏
  • 举报
回复
跟踪各种跟踪

xmlHttpRequest.open("GET",url,true);

alert(url);
//发送请求
xmlHttpRequest.send(null);

servlet里设断点跟踪

返回之后callback里alert跟踪


luallen 2009-05-06
  • 打赏
  • 举报
回复
function xmlhttp()
{
var A=null;
try
{
A=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
A=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(oc)
{
if (typeof XMLHttpRequest != "undefined" );
{
A=new XMLHttpRequest();
}
}
}
return A;
}


function Judgement(){
var request_url= "请求路径";
try
{
var oXmlHttp = xmlhttp();
oXmlHttp.open("GET", request_url, true);
oXmlHttp.setRequestHeader('If-Modified-Since', '0'); //清除缓存
oXmlHttp.onreadystatechange = function()
{
if (oXmlHttp.readyState == 4 && oXmlHttp.status == 200)
{
tmp = oXmlHttp.responseText;//返回值

}
}
oXmlHttp.send();
} catch (e) {
}
}
试一下这个吧
luallen 2009-05-06
  • 打赏
  • 举报
回复
Servlet执行了吗?
mjlovewen 2009-05-06
  • 打赏
  • 举报
回复
我也是初学者,我每一次碰到问题我都会从开始表单那里一步一步的调试,看一下进行到那里就停止了,JAVASCRIPT就用alert弹出,SERVLET里面就用OUT给打印出来。。
lhzx_zjg 2009-05-06
  • 打赏
  • 举报
回复
xmlHttpRequest 需要定义成全局变量
lhzx_zjg 2009-05-06
  • 打赏
  • 举报
回复
myeclipse debug+firebug调试

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧