AJAX 异步传输数据的问题

我居然是骚包

我居然是骚包

2016-02-19 11:29

下面是个简单易学的AJAX 异步传输数据的问题教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!
要异步传输的数据:
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[1].value = script;
test_form.elements[2].value = feedGeneral;
test_form.submit();

仍未发现问题到底出在何处,暂做备忘。暂时把script中的‘+'都用‘-'代替,index += 1;改成index -= -1;呵呵,以后有人看到这段自动生成的诡异脚本,不知道会作何感想,但现在也只能如此。
展开更多 50%)
分享

猜你喜欢

AJAX 异步传输数据的问题

Web开发
AJAX 异步传输数据的问题

使用javascript 完成异步数据提交(AJAX)

Web开发
使用javascript 完成异步数据提交(AJAX)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Ajax 对象 包含post和get两种异步传输方式

Web开发
Ajax 对象 包含post和get两种异步传输方式

ajax 异步获取数据实现代码 (js创建ajax对象)

Web开发
ajax 异步获取数据实现代码 (js创建ajax对象)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

基于ajax异步请求的实现

Web开发
基于ajax异步请求的实现

战网传输数据遇到问题怎么办

电脑网络
战网传输数据遇到问题怎么办

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Nib文件是什么?Nib文件打开方法

Nib文件是什么?Nib文件打开方法

Win10 9926任务栏无法使用预览桌面功能怎么办?

Win10 9926任务栏无法使用预览桌面功能怎么办?
下拉加载更多内容 ↓