最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

AJAX 异步传输数据的问题

来源:懂视网 责编:小采 时间:2020-11-27 22:52:35
文档

AJAX 异步传输数据的问题

AJAX 异步传输数据的问题:要异步传输的数据: Xml代码 .... <action xsi:type=basic:JavaScript script=index += 1;/> .... Ajax异步传输代码: Js代码 代码如下:var postData = input=+ escape(inputJSON) +&script=
推荐度:
导读AJAX 异步传输数据的问题:要异步传输的数据: Xml代码 .... <action xsi:type=basic:JavaScript script=index += 1;/> .... Ajax异步传输代码: Js代码 代码如下:var postData = input=+ escape(inputJSON) +&script=

要异步传输的数据:
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;呵呵,以后有人看到这段自动生成的诡异脚本,不知道会作何感想,但现在也只能如此。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

AJAX 异步传输数据的问题

AJAX 异步传输数据的问题:要异步传输的数据: Xml代码 .... <action xsi:type=basic:JavaScript script=index += 1;/> .... Ajax异步传输代码: Js代码 代码如下:var postData = input=+ escape(inputJSON) +&script=
推荐度:
标签: 数据 问题 的问题
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top