`

AJAX 异步传输数据的问题

    博客分类:
  • Ajax
阅读更多

要异步传输的数据:

....     
<action xsi:type="basic:JavaScript"  script="index += 1;"/>
....

 Ajax异步传输代码:

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后:

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:

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

分享到:
评论

相关推荐

    Ajax异步传输数据(1)——页面格式

    NULL 博文链接:https://cjp1989.iteye.com/blog/1740198

    Ajax中使用JSON传输数据

    json.js and json.jar 博文链接:https://terran-li2008.iteye.com/blog/199088

    Ajax实现的异步传输与验证示例代码

    Ajax异步传输用得很广,就拿web开发来说吧,当用户注册时,当用户刚一输完,怎么立即判断用户是否存在,并在输入框后显示提示?这就用到了异步传输~~ 它可以让你不离开页面的情况下,获取后台你想要的数据,并显示在...

    Ajax异步请求&Json数据格式配套学习资料

    Ajax(ASynchronous JavaScript And XML):是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术, Json(JavaScript Object Notation) :现在多用于存储和...进行数据的传输,SON 比 XML 更小、更快,更易解析。

    ajax经典怎样传输数据

    ajax经典怎样传输数据,$.ajax({ async: true, // 默认true(异步请求) cache: true, // 默认true,设置为 false 将不会从浏览器缓存中加载请求信息。 type: "POST", // 默认:GET 请求方式:[POST/GET] dataType: ...

    ajax 异步流代理类

    一个ajax的异步流代理类,能够支持下载数据流的持续传输,比普通代理类下载数据有更好的性能

    AJAX无刷新留言板.rar

    AJAX无刷新留言板,无刷新的留言,分页. 用AJAX进行异步传输数据.异步获取数据.

    掌握Ajax 学习资料pdf

    掌握 Ajax第 1 部分-Ajax 简介 掌握 Ajax第 2 部分-使用 JavaScript 和 Ajax 发出异步请求 掌握 Ajax第 3 部分-Ajax 中的高级...掌握 Ajax第 10 部分--使用 JSON 进行数据传输 掌握 Ajax第 11 部分--服务器端的 JSON

    java+servlet+json+ajax异步调用

    jsp+servlet+ajax使用json作为数据传输介质完成 1.用户名是否存在的验证 2.根据姓名获取该对象使用gson将对象转换成json后返回给客户端并显示,完成修改功能时经常使用 3.gson将集合转换成json(数组格式)后返回给...

    Ajax原理详解

    Ajax原理详解,java中使用Ajax异步传输数据的使用方法,可以局部的刷新页面,详细的解释,让你很快掌握使用技巧

    ajax课件.ppt

    举个例子:普通B/S模式(同步) AJAX技术(异步) * 同步:提交请求-&gt;等待服务器处理-&gt;处理完毕... 异步传输: 你传输吧,我去做我的事了,传输完了告诉我一声 同步传输: 你现在传输,我要亲眼看你传输完成,才去做别的事

    flex+jsp数据传输类似ajax

    一个完整例子,演示felx和jsp的数据传输方法。类似ajax的异步交互。(不要忘记改flex里的url...)

    ajax+jquery

    1:理解同步和异步 同步交互和异步交互 举个例子:普通B/S模式(同步) ...异步传输: 你传输吧,我去做我的事了,传输完了告诉我一声 同步传输: 你现在传输,我要亲眼看你传输完成,才去做别的事 2:ajax技术.....

    ajax数据传输方式实例详解

    本文实例讲述了ajax数据传输方式。分享给大家供大家参考,具体如下: 在异步应用程序中发送和接收信息时,常见的可以选择以纯文本和XML作为数据格式(可参考《jQuery学习笔记之Ajax用法实例详解》),现在还有一种...

    Ajax传输中文乱码问题的解决办法

     我是在一个jsp页面有一个保存按钮,点击时会触发saveForm()的js函数,在saveForm()函数里经过校验后,会通过ajax发送数据请求,这样就不用通过提交表单来传输数据了,ajax估计就是这样的好处吧,目前对ajax还不太...

    ajax\ajax实战(中文).

    异步传输数据 servlet核心技术 mvc模式 part4

    Django 使用Ajax进行前后台交互的示例讲解

    为了方便前后台交互,利用了Ajax的GET和POST方法分别进行数据的获取和提交。 代码如下: &lt;!--利用获取的数据进行表单内容的填充--&gt; [removed] $(#soft_id).change(function(){ var softtype=$(#soft_id).find...

    Ajax详解

    内容简要给大家说明一下:Ajax简介、使用Javascript和Ajax发出异步请求、Ajax中的高级请求响应、利用Dom进行Web响应、操作dom、建立基于Dom的Web应用程序、在请求和响应中使用XML、使用Json进行数据传输、...

Global site tag (gtag.js) - Google Analytics