AJAX 异步传输数据的问题

2016-02-19 11:29 10 1 收藏

下面是个简单易学的AJAX 异步传输数据的问题教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - Web开发 】

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

来源:http://www.tulaoshi.com/n/20160219/1597699.html

延伸阅读
标签: Web开发
代码如下: /**//* 异步请求类 作者:吾非无心 创建时间:2009.2 --------------------------------------------------------------------------------------------------------------------------------- 修改记录: 2009.4.27——添加 URL 检测功能,如果是“http://xxxx.xxx.xx.xx/..”这样的格式,使用系统提供的“/getUrl.aspx...
标签: PHP
异步的文件上传是在现代的AJAX实现的Web应用里面经常要遇到,必须解决的问题。但是标准的AJAX类(XmlHttpRequest)无法实现传输文件的功能。因此,这里讨论的内容就是如何在AJAX的技术的基础之上构建异步的文件上传功能。在这个功能当中需要使用到内置的框及(IFRAME)来传输文件。这个功能实现的效果是页面在上传文件的时候...
VB精彩教程:数据异步加载 异步加载是ADO的一种数据加载方式,主要由记录集的options参数来控制! ADO210.CHM中的格式: recordset.OpenSource,ActiveConnection,CursorType,LockType,Options Options 可选。Long值,指示提供者计算Source参数的方式(如果该参数表示除Command对象之外的某些内容),或者指示Rec...
       在VC或VB中需要耗时的查询时,  客户一般需要等待很长一段时间, 这种情况客户是无法容忍而且也无法取消, 那么怎样么办呢.           1.首先采用多线程的方式, 工作线程与UI线程分开, 工作线程处理完毕时向主线程发消处理完毕的消息;另一种方法采用向...
作为Web应用程序模型的AJAX的出现使服务器端的面貌发生了巨大的变化。用户对着Web页面填写表单并单击提交按钮转到下一个链接的典型Web使用模式现在正在转变为更先进的客户端JavaScript以及功能更丰富的用户界面,只要对表单进行操作,比如单击一个复选框、按下一个键或将鼠标移到一个选项卡上,该用户界面就会不断地与服务器交互。 考...

经验教程

274

收藏

88
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部