随笔-86  评论-767  文章-3  trackbacks-3

《Ajax开发简略》发布以来,经常收到网友的求助邮件。由于eamoi时间有限,不能一一及时解答。建议大家把代码在此跟帖,能帮助解决问题的朋友也可以随后提出解决办法。
此注。

posted on 2006-03-09 10:21 eamoi 阅读(8643) 评论(37)  编辑  收藏 所属分类: AJAX

评论:
# re: Ajax应用问题求助汇总 2006-03-09 10:35 | 冷月宫主
现在由于在做一个项目,看了《AJAX开发简略》,因此也想将AJAX应用到项目中,谁知出问题了,在取数据时用responseText可以正常返回数据,但用responseXML返回就出问题了,我本意是想返回XML数据,在前台再用javascript做处理,但用responseText可以得到返回的数据,用responseXML就是得不到,不过也许是得到了,用getElementsByTagName取不出其中的数据。上面的情况我在weblogic9.1下运行出现的错误,同样代码,我放到tomcat5.5下做测试就完全正常。另外,我有一个经验就是“response.setCharacterEncoding("UTF8");”针对weblogic8.1是不认得的编译无法通过(我用的JB2006),改成weblogic9.1就可以了。

现在把我的测试文档贴到下面:

XML文档(test.xml):
<?xml version="1.0" encoding="UTF-8" ?>
<states>
<north>
<state>Minnesota</state>
<state>Iowa</state>
<state>North Dakota</state>
</north>
<south>
<state>Texas</state>
<state>Oklahoma</state>
<state>Louisiana</state>
</south>
<east>
<state>New York</state>
<state>North Carolina</state>
<state>Massachusetts</state>
</east>
<west>
<state>California</state>
<state>Oregon</state>
<state>Nevada</state>
</west>
</states>

HTML文件(test.html):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" language="javascript">

var http_request = false;

function makeRequest(url) {

http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}

if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('GET', url, true);
http_request.send(null);

}

function alertContents() {

if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
var xmldoc = http_request.responseXML;
alert(xmldoc);
var states = xmldoc.getElementsByTagName('state');
alert(states);
outputList("输出结果:", states);
} else {
alert('There was a problem with the request.');
}
}

}
function outputList(title, states) {
var out = title;
var currentState = null;
for(var i = 0; i < states.length; i++) {
currentState = states[i];
out = out + "\n- " + currentState.childNodes[0].nodeValue;
}

alert(out);
}
</script>
</head>
<body>
<span
style="cursor: pointer; text-decoration: underline"
onclick="makeRequest('test.xml')">
Make a request
</span>
</body>
</html>

希望帮我找找原因,谢谢!  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-09 13:11 | hwlcsx@sina.com
我现在有一个简单的登陆程序有问题需要问一下
程序列表如下: login.html 一个server.jsp
login.html中的代码非常普通.几乎就是你给出的教程例子.
当server.jsp验证出错误后使用out.print("xxx")可以将信息返回到login.jsp
我想问有什么比较完美的做法可以在当server.jsp验证通过后通知login.jsp该转向下一个页面
也就是说
<!-- login.jsp -->
if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.responseText);
<!--A-->
} else {
alert('There was a problem with the request.');
}
}
就是在A处怎么才能跳转下一个页面呢.或者在其他地方跳也可以.只要能跳转就行.


我试过在login.jsp加一个<div id="msg"></div>
在代码A处写出
var obj = document.getElementById("msg");
obj.innerHTML=http_request.responseText;
在server.jsp中如果验证通过的话使用
out.print("<javascript type=\"text/javascript\">location.replace('index.html')<\script>");

其实结果就是在login.jsp中
<div id="msg">
<javascript type="text/javascript">
location.replace('index.html')
<\script>
</div>

后来我试过不行.因为页面没有理睬刚写入的脚本.原因我也理解了为什么没有执行.

现在就是没有好方法实现.不知道有没有可行的方法???谢谢

  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-09 13:31 | 胡子鱼
TO: 冷月宫主

有中文字符的情况,对吧?  回复  更多评论
  
# re: 与冷月宫主关于1楼问题的MSN实录 2006-03-09 13:40 | eamoi
10:42:15 Kezc-- responseText显示正常,responseXML显示不出来?
10:42:31 冷月宫主 是的
10:42:57 Kezc-- 会不会是utf-8编码的问题。可能是DOM无法识别你返回的XML文档。
10:43:35 冷月宫主 噢,与服务器有关吗?
10:43:45 冷月宫主 我只要改文件就行了吧?
10:43:48 冷月宫主 我试试
10:44:02 Kezc-- 编码与服务器有关。建议将XML文档编码改为GB2312试试看。
10:44:24 冷月宫主 好的,我試

10:46:36 冷月宫主 改成:
<?xml version="1.0" encoding="GB2312" ?> 也不行

10:47:27 Kezc-- alert(xmldoc) 是什么结果?
10:47:53 冷月宫主 object
10:48:42 冷月宫主 states.length为0
10:49:32 Kezc-- responseXML返回的结果不是XML文档,DOM解析不到。
这种问题我也经常碰到。
10:49:55 冷月宫主 噢,可能是这个问题
10:50:00 Kezc-- 也可能是缓存的原因。Ajax使用了缓存机制。
10:50:09 冷月宫主 那是格式问题还是我用错了?
10:50:36 冷月宫主 噢,对于传的XML文件怎么解决?
10:50:40 Kezc-- 修改XML文档编码方式后,重新启动一下服务器和浏览器试试看。
10:51:57 冷月宫主 噢,好的,再者,我也发现,你如果改了XML文件的话,必须重新找开浏览器才能请出新的XML文件
10:52:15 冷月宫主 不过我没有重启服务器去试
10:52:21 Kezc-- 是。我觉得是Ajax的缓存机制的问题。
10:53:28 冷月宫主 在servlet中放入response.setHeader("Cache-Control", "no-cache");就是解决缓存问题的吧?
10:53:55 Kezc-- 应该是。
10:54:57 冷月宫主 噢,我文件改为:<?xml version="2.0" encoding="GB2312" ?>

重启了weblogic还是不行

10:55:21 Kezc--奇怪,xml的version不是都为1.0么?
10:55:54 冷月宫主 不好意思,我刚才随意改了一下,想試工序

10:57:49 冷月宫主 现在我至少明白了,表示现在responseXML不是XML文档,它解析不出来
10:58:12 Kezc-- 当然。DOM不是万能的。
10:59:29 冷月宫主 这个东东很淘气,问题是在我另一个tomcat服务器上是正常的
11:00:17 冷月宫主 还有,会不会与javascript部分的dom版本有关?
11:00:44 冷月宫主 try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch {}
}
}

11:01:18 Kezc-- 那也应该与浏览器有关,跟服务器无关。排除
11:02:30 冷月宫主 噢,实在没招了
11:16:34 Kezc-- 我要在Weblogic里面测试一下。Tomcat是应该没问题的。代码我看过了。
11:17:25 冷月宫主 好的,不知你装weblogic没有,如果没有的话要害你装了,哈哈
11:18:04 Kezc-- 有,8.1的
11:18:05 冷月宫主 对了,我的是weblogic9.1中文版
11:18:23 Kezc-- 9.1就没有了。你都测试过了,我就不测试了。
11:18:32 冷月宫主 噢,我也试试8.1看行不行

11:29:32 冷月宫主 我试了一下8.1+SP4中文也不行   回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-09 14:06 | Freedom
@冷月宫主
@hwlcsx@sina.com
可能是在返回数据时没有设置
response.setContentType("text/xml");  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-09 14:36 | 冷月宫主
to 胡子鱼:我上面给出的测试文件没有中文,上面我给出的测试文件是完整的,你可以存下来试试,帮我看看,谢谢!

to Freedom:因我是取服务器上的XML文件,你看,是直接传入的XML文件名,那你这句加在那儿?另外,我也试了Servlet,我是这样写的:
...
private static final String CONTENT_TYPE = "text/xml; charset=gb2312";
...
response.setContentType(CONTENT_TYPE);
...

传回来的结果也是和我上面说我情况一模一样!

谢谢你的关注!!!  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-09 15:21 | 冷月宫主
一个另类的解决办法:

retXml=http_request.responseText;
var OrgDoc = new ActiveXObject('Microsoft.XMLDOM');
OrgDoc.async = false;
OrgDoc.loadXML(retXml);
var root = OrgDoc.documentElement;
NodeLists = root.childNodes;
for (var i=0; i<NodeLists.length; i++)
{
Item = NodeLists.item(i);
//for(int j=0;j<Item.childNodes.length;j++){
alert(Item.childNodes(0).text);
//}
}
  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-09 17:32 | 邹慧明
@冷月宫主
@hwlcsx@sina.com
用WINDOW.OPEN 不行吗  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-09 19:15 | 冷月宫主
@邹慧明
WINDOW.OPEN?我的代码可用不到吧?  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-10 10:51 | hwlcsx@sina.com
window.open不能用,因为是弹出啊.
我需要的是跳转.整个页面的转向.
而且重要的是无法判断什么时候该用obj.innerHTML= responseText什么时候该用window.open...
因为无法判断server.jsp返回的数据的具体状态.他们都是readyState=4&&status=200/////  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-10 11:19 | eamoi-no_login
to hwlcsx@sina.com

obj.innerHTML=http_request.responseText;
的代码可以更改为:
eval(http_request.responseText);

试试看。

或许有一种更加复杂但是可行的方法:将server.jsp的返回数据组织成为一个XML文档,这个XML文档可以包含请求状态、跳转目标URL等信息。而在login.jsp中使用responseXML获取这个XML文档,根据XML文档中的相关信息做跳转或者其他处理。

PS:建议测试一下看是否可行。

by:eamoi  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-10 11:26 | eamoi
如果使用eval(http_request.responseText); ,那么server.jsp的
out.print("<javascript type=\"text/javascript\">location.replace('index.html')<\script>");
可以简单的这么写:
out.println("location.replace('index.html');"); ,即去除<script>之类的声明语句。  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-10 12:10 | hwlcsx@sina.com
如果使用eval函数,那么我该怎么确定该在什么时候使用obj.innerHTML什么时候该使用eval()呢?
如果替换的话那么如果验证错误的话,server.jsp返回的提示信息使用eval()函数能否显示在我指定的<div id="msg"></div>标签中呢.

刚才这段时间我想出一个解决办法.
就是在server.jsp验证通过后设置httpresponse.status使他不等于200
而是等于302/// w3c的httpresponse.status状态规定302代表类似与response.sendRediect(),也就是重定向.
那么我的代码可以改成
if(httpResponse.status == 200){
obj.innerHTML = ....;
}else(httpResponse.status == 302){
location.replace(request.responseText);
}
因为可以在验证通过后将要跳转的页面地址写入request.responseText..
还可以起到隐藏真实重定向地址的好处.
还同时想到了好几种方法,还不知道那种可行那种更好用... -_-!  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-10 12:18 | hwlcsx@sina.com
将server.jsp的返回数据组织成为一个XML文档...这个思路我想屏弃掉.
因为登陆是一个要求速度的操作请求.在安全的前提下越快越好.
如果采用解析xml的方式将会同时增加客户端的的解析速度和服务端生成相应xml的速度.当然其实速度是可以很快的,慢只是相对的.
所以优先考虑其他处理方式.
谢谢你的帮助...  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-13 14:04 | hwlcsx@sina.com
试完了.一半失败一般成功.
因为程序没有象我当初预想的那样进行下去.
在server.jsp中使用response.setStatus(302);之后似乎tomcat进行了一些处理,响应流并没有直接返回到login.jsp,好象被tomcat处理了一下,所以httpResponse对象没有拿到正确的status.而实际上status等于12150,并不是302.最后尝试结果使用response.setStatus(206)可以将响应流直接返回到login.jsp.但是login.jsp中的javascript不能使用httpResponse.status ==206),因为这个标志也是得不到的.
最后改成
if(httpResponse.status == 200){
obj.innerHTML = ....;
}else{
nextpage(); //B
}
在//B方法中可以使用http_request.responseText得到server.jsp返回的信息.并且进行跳转.... 虽然实现了功能实在是无奈的办法... 再尝试其他的吧.

那位仁兄有好的想法还望转告一声  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-23 01:29 | 寒心月
你好,我想知道send方法的是怎么使用的。  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-26 20:18 | 冷月宫主
关于我的那个问题,现在的状况是:如果那样取XML文件的话在tomcat下确实是可以取,但在weblogic下怎么也取不出来,也就是取出来的,它不认为那是一样XML文档无法解析,也是我懒,我没有直接servlet直接来生成一个XML格式的文档测试,实验证明,如果那个XML文档是在servlet中用out.write()的形式输出的话在页面上就可以正常取了,原因没搞明白,但问题解决了,实际上,我也正是要在servlet中生成XML文档,但当时是为了测试才拿一个XML文件来做,就卡在那儿了,唉。。。

谢谢各位的关注,也谢谢blog的主人!!!  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-31 13:46 | eDust
字符编码问题!  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-31 14:15 | eamoi
关于Ajax中文编码问题,在《Ajax开发精要:概念、案例与框架》中有专门的章节介绍,并提供相应的解决方案。  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-03-31 22:49 | 陈秦
不错,不错,学习中。。。。  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-04-25 12:48 | Winter
通过ajax客户端调用web服务,获得返回值,已经成功。返回值为一个字段和一个xml
以上操作已成功。现在的问题是:想将返回的xml转为一张表格。页面代码如下:
<html>
<head>
<script type="text/javascript" src="scripts/prototype.js"></script>
<script type="text/javascript" src="scripts/ws.js"></script>
<script type="text/javascript">
function sayHello(name, container) {
var call = new WS.Call('/AjaxWS/services/HelloWorld');
var nsuri = 'http://example';
var qn_op = new WS.QName('sayHello',nsuri);
var qn_op_resp = new WS.QName('sayHelloResponse',nsuri);
call.invoke_rpc(
qn_op,
new Array(
{name:'name',value:name}
),null,
function(call,envelope) {
var ret =
envelope.get_body().get_all_children()[0].get_all_children()[0].get_value();
container.innerHTML = ret;
$('soap').innerHTML = arguments[2].escapeHTML();
}
);
}
</script>
<style>
body {
font-family: verdana;
}
#container {
margin: 10pt;
border: 1pt solid black;
padding: 2pt;
}
#result {
padding: 5pt;
background-color: #eeeeee;
}
#soap {
padding: 5pt;
background-color: #eeeeee;
font-size: 10pt;
}
</style>
</head>
<body>
<input name="name" id="name" />
<input value="Invoke the Web Service"
type="button"
onclick="sayHello($('name').value,$('result'))" />
<div id="container">Result:
<div id="result">
</div>
<div id="soap">
</div>
</div>
</body>
</html>

其中用到两个.js文件,见下文  回复  更多评论
  
# 接上文 2006-04-25 12:51 | Winter
第一个ws.js,摘要代码如下:

var XML = {
createDocumentQName : function(qname) {
return XML.createDocument(qname.namespace,qname.value_of());
},
createDocument : function(namespace,nodename) {
return Try.these(
function() {
var doc = new ActiveXObject('Msxml2.XMLDOM');
var root = XML.createElementNS(doc, nodename, namespace);
doc.documentElement = root;
return doc;
},
function() {
var doc = new ActiveXObject('Microsoft.XMLDOM')
var root = XML.createElementNS(doc, nodename, namespace);
doc.documentElement = root;
return doc;
},
function() {
return document.implementation.createDocument(
namespace,
nodename,
null)
}
) || false;
},
createElementNS : function(document,nodename,namespace) {
var el = Try.these(
function() {
var el = null;
if (namespace) {
el = document.createNode(1,nodename,namespace);
} else {
el = document.createNode(1,nodename,"");
}
return el;
},
function() {
var el = null;
if (namespace) {
el = document.createElementNS(namespace,nodename);
} else {
el = document.createElement(nodename);
}
return el;
}
) || false;
return el;
},
createElementQName : function(document,qname) {
return XML.createElementNS(document,qname.value_of(),qname.namespace);
},
createAttributeNS : function(document,nodename,namespace,value) {
var attr = Try.these(
function() { return document.createNode(2,nodename,namespace)},
function() { return document.createAttributeNS(namespace,nodename)}
) || false;
attr.nodeValue = value;
return attr;
},
createAttributeQName : function(document,qname,value) {
return XML.createAttributeNS(document,qname.value_of(),qname.namespace,value);
},
createAttribute : function(document,nodename,value) {
var attr = Try.these(
function() { return document.createNode(2, nodename)},
function() { return document.createAttribute(nodename)}
) || false;
attr.nodeValue = value;
return attr;
},
createText : function(document,value) {
var node = Try.these(
function() { return document.createTextNode(value) }
) || false;
return node;
},
createCDATA : function(document,value) {
var node = Try.these(
function() { return document.createCDATASection(value) }
) || false;
return node;
},
getElementsByQName : function(element, qname) {
var nl = null;
if(!element.getElementsByTagNameNS) {
nl = new Array();
var nodes = element.getElementsByTagName(qname.value_of());
for (var n = 0; n < nodes.length; n++) {
if (nodes[n].namespaceURI == qname.namespace) {
nl.push(nodes[n]);
}
}
} else {
nl = element.getElementsByTagNameNS(qname.namespace,qname.localpart);
}
return nl;
}
}  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-04-25 12:52 | Winter
SOAP.Envelope = Class.create();
SOAP.Envelope.QNAME = new WS.QName('Envelope',SOAP.URI);
SOAP.Envelope.prototype = (new SOAP.Element()).extend({
initialize : function() {
var element = arguments[0];
if (!element) {
var document =
XML.createDocumentQName(SOAP.Envelope.QNAME);
element = document.documentElement;
}
this.initialize_internal(element);
},
set_value : null,
get_value : null,
create_child : null,
create_header : function() {
if (!this.has_header()) {
var doc = this.element.ownerDocument;
var el = XML.createElementQName(doc, SOAP.Header.QNAME);
if (this.element.firstChild) {
this.element.insertBefore(el, this.element.firstChild);
} else {
this.element.appendChild(el);
}
var ret = new SOAP.Header(el);
return ret;
} else {
return this.get_header();
}
},
get_header : function() {
var val = null;
for (var n = 0; n < this.element.childNodes.length; n++) {
if (this.element.childNodes[n].nodeType == 1) {
var el = this.element.childNodes[n];
if (SOAP.Header.QNAME.equals(WS.QName.fromElement.bind2(el)())) {
val = new SOAP.Header(el);
break;
}
}
}
return val;
},
has_header : function() {
var val = null;
for (var n = 0; n < this.element.childNodes.length; n++) {
if (this.element.childNodes[n].nodeType == 1) {
var el = this.element.childNodes[n];
if (SOAP.Header.QNAME.equals(WS.QName.fromElement.bind2(el)())) {
val = true;
break;
}
}
}
return val;
},
create_body : function() {
if (!this.has_body()) {
var doc = this.element.ownerDocument;
var el = XML.createElementQName(doc, SOAP.Body.QNAME);
this.element.appendChild(el);
var ret = new SOAP.Body(el);
return ret;
} else {
return this.get_body();
}
},
get_body : function() {
var val = null;
for (var n = 0; n < this.element.childNodes.length; n++) {
if (this.element.childNodes[n].nodeType == 1) {
var el = this.element.childNodes[n];
if (SOAP.Body.QNAME.equals(WS.QName.fromElement.bind2(el)())) {
val = new SOAP.Body(el);
break;
}
}
}
return val;
},
has_body : function() {
var val = null;
for (var n = 0; n < this.element.childNodes.length; n++) {
if (this.element.childNodes[n].nodeType == 1) {
var el = this.element.childNodes[n];
if (SOAP.Body.QNAME.equals(WS.QName.fromElement.bind2(el)())) {
val = true;
break;
}
}
}
return val;
}
});  回复  更多评论
  
# re: Ajax应用问题求助汇总 2006-05-10 17:30 | gunson
@冷月宫主

我的客户端请求一个url,该url将打印一个xml内容,但是在客户端接受时,使用responseXML无法解析.但是responseText可以得到这个xml内容。

还是这个方法好用,先定一个DOM对象,然后使用loadXML方法将responseText的内容加载进去,这样这个DOM就可以对xml内容进行解析了~~
好用!!

沾了个光,正好为这个问题发愁呢?

大家一起加油吧!!!  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-05-12 08:58 | steven
新增分页查询案例(包括《Ajax开发精要》中的两个综合案例) 2006-05-11 16:38 | steven
我下载了包包部署好后,运行正常,但运行简单的Ajax留言簿时,多留几次言就报错,提示“您请求的页面有异常”
Tomcat 就死掉了
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: -1 in the jsp file: null

Generated servlet error:
[javac] Compiling 1 source file

E:\Tomcat4127\temp\message\ajaxMessage_jsp.java:7: package com.eamoi.ajax does not exist
import com.eamoi.ajax.*;   回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-05-28 21:56 | showsen
作者你好,我今天刚买了你的书《Ajax开发精要》,你可否给我书中的代码?  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-05-29 08:15 | eamoi
书中的源码可以在博文视点公司的网站上下载得到。地址:
http://www.broadview.com.cn

http://www.broadview.com.cn/download.aspx?bookid={E7A05E97-9916-48FC-9C31-91836A0A7ACB}  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-06-21 16:53 | czd000@163.com
你好,我是ajax初学者
,看了您写的书收获很大,有一个问题想问你。在客户端的html页面中用ajax发送请求到一个jsp页面,jsp页面处理完后用out.println(“This is my jsp page”)返回结果,在客户端页面得到的responseText为什么包含html代码?如下This is my jsp page才是我应该得到的结果,情给予指点,谢谢!!
<html>
<head>
<base href="http://localhost:8080/tteesstt/">

<title>My JSP 'test.jsp' starting page</title>

</head>

<body>
This is my JSP page.

</body>
</html>
  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-06-21 16:56 | czd000@163.com
如何才能在客户端得到的reaponseText中的内容只是This is my JSP page这一句,而不包含其他的html代码?  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-07-12 15:16 | gary
诸位大哥,小弟刚刚接触ajax,有个小问题,想请教各位专家,希望大家帮帮忙
我声明XMLHttpRequest后调用另一个服务器端代码,但是status码提示为0
不是回应的200,这是为什么啊?现将主要客户端代码写在下面:
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest()
{
if (window.ActiveXObject)
{
xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
}
else if (window.XMLHttpRequest)
{
xmlHttp = new XMLHttpRequest();
}
}

function handleStateChange()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
parseResults();
}
}
}


function inputTest()
{
createXMLHttpRequest();
var queryString = "GetAndPostExample?timeStamp=" + new Date().getTime();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", queryString, true);
xmlHttp.send(null);

var responsetest = xmlHttp.readyState + "and" + xmlHttp.status + "\r";
var responseDiv = document.getElementById("serverResponse");
var responseText = document.createTextNode(responsetest);
responseDiv.appendChild(responseText);
}
</script>  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-08-16 14:45 | sunson
为什么在ajax中引用Servlet时老是出现404错误?  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-08-16 14:45 | sunson
为什么在ajax中引用Servlet时老是出现404错误?  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-08-16 14:45 | sunson
为什么在ajax中引用Servlet时老是出现404错误?  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-09-03 06:07 | 邱俊
您好,我用ajax+xml+asp 做blog是遇到这样的问题
asp返回一个xml文件,在客户端用js解析,
返回的xml文件无法解析,又没有报错,xml是用的responseXML得到的,用responseText测试知道xml文件已经返回到客户端,
xml文件:
<?xml version="1.0" encoding="gb2312" ?>
<articles>
<className>INDEX</className>
<article>
<title>《暂停的故事》我很喜欢听的一首歌</title>
<pubdate>Pubdate : 2006-6-13 23:41:30|Count : 14</pubdate>
</article>
</articles>

http_request.responseXML.getElementsByTagName("article").length 得到的值总是0,应该是1才对,
不知道是什么原因,望请赐教!!
  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2006-09-03 06:13 | 邱俊
接上文,当不采用asp返回的xml文件,直接读已经存在的而且内容一样xml文件时,又全部正确。@冷月宫主
  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2007-01-25 17:52 | xu may
用ajax,返回readyState为1,测试了一下,当readyState为1,2,3,4时,分别弹出警告,报告readyState的状态,是什么原因导致不直接到4?  回复  更多评论
  
# re: Ajax应用问题求助汇总&《Ajax开发精要》反馈 2008-02-29 17:33 | 我爱百合
我以循环方式请求XMLHttpRequest(AJAX)
现在遇到一个问题
第一次请求的数据还没有返回,我第二次请求就发出了(第二次请求和上一次请求的结果有关)

大家说说这种情况该怎么处理??   回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: