当前位置: 网学 > 编程文档 > Ajax > 正文

AJAX 异步传输数据的问题

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/07/10

鉴于大家对Ajax十分关注,我们编辑小组在此为大家搜集整理了“AJAX 异步传输数据的问题”一文,供大家参考学习

要异步传输的数据:
Xml代码
....
<action xsi:type="basic:JavaScript" script="index += 1;"/>
....
Ajax异步传输代码:
Js代码
复制代码 代码如下:
var postData = "input="+ escape(inputJSON) +"&script="+escape(xml)+
"&feedGeneral=" + escape(feedGeneral);
XmlHttpRequest.open("POST",url,true);
XmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
XmlHttpRequest.send(postData);

postData在encode和unencode,最终导致在后台Servlet中得到得到数据+被空格代替,使得script中的index += 1;变成了index = 1;从而导致后台Java代码在跑script出现死循环。
在网上搜索,发现content-type使用application/x-www-form-urlencoded后:
[来自http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1]写道
复制代码 代码如下:
Control names and values are escaped. Space characters are replaced by `+'', and then reserved characters are escaped as
described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by `%HH'', a percent sign and two hexadecimal
digits representing the ASCII code of the character. Line breaks are represented as "CR LF" pairs (i.e., `%0D%0A'').

然而使用form来提交方式来发起request却不会出现类似的问题,而form默认的Content-Type也是application/x-www-form-urlencoded:
Js代码
复制代码 代码如下:
$(''test'').innerHTML = "<form target=''_blank'' id=''test_form'' action=''./gen_feed'' method=''post''>"
+ "<input type=''text'' name=''input'' /><input type=''text'' name=''script'' />"
+ "<input type=''text'' name=''feedGeneral'' /><input type=''hidden'' name=''format'' value=''" + this.feed_type + "''
/>"
+ "<input type=''submit'' value=''gen'' /></form>";
var test_form = $(''test_form'');
test_form.elements[0].value = inputJSON;
test_form.elements.value = script;
test_form.elements.value = feedGeneral;
test_form.submit();

仍未发现问题到底出在何处,暂做备忘。暂时把script中的‘+''都用‘-''代替,index += 1;改成index -= -1;呵呵,以后有人看到这段自动生成的诡异脚本,不知道会作何感想,但现在也只能如此。
  • 下一篇资讯: ASP AJAX 静态分页第1/2页
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号