`
zybing
  • 浏览: 458974 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ajax/JS消息等问题总结

阅读更多

 

让新人做一个demo,发现有太多的问题,将这些问题总结一下(主要是页面、Ajax处理):


1. JS事件的模式:

   问题:对于JS消息是如何处理的不清楚。

   说明:这个demo需要页面中的控件和BHO进行交互,有BHO处理页面中控件发出来的消息。新人一直以为控件的消息处理,要写在控件定义的地方:如<input type="button" onClick="">,好像只有这种写法是在处理消息。

   在http://www.iteye.com/topic/299320中有相关的说明;而且控件的消息是层层上传的(虽然IE和firefox在最后一层处理不同:如页面中的控件消息,在IE的浏览器中BHO可以接收到,而firefox接收不到)。


   在原始事件模型中,浏览器把事件分派给发生事件的文档元素。如果该那个对象具有适合的事件处理程序,就运行这个程序。除此之外,不用执行其他的操作。但是,在标准事件模型中,情况则要复杂很多。当事件发生在目标元素时,目标的事件处理程序会被触发。此外,目标的每个祖先节点也有机会处理那个事件。事件传播分三个阶段完成。一:在捕捉(capturing)阶段,事件从Document对象沿着文档向下传播给目标节点。在这期间,目标对象的任何祖先节点都可以捕捉的事件并处理它。二:目标节点本身,这和原始时间模型相似,最后一个阶段是起泡阶段:在这个阶段,事件将从目标元素向上传播回Document对象的文档层次。



2. 写控件事件响应的3种方式:

  问题:在页面中写事件响应,只会一种模式:

  说明:有3种模式:

        1. <input .... onClick=“” >

        2. document.getElementById("btn").onclick = function(){alert("mzwu.com");} -- 直接在这里定义函数体

        3.document.getElementById("btn").onclick = e; -- e是一个已经定义的JS函数;以上的2个问题,在这里已经有所说明

 

3.Ajax进行Post的方法:
   问题:只知道用Ajax发出一个URL请求,不知道post、get区别;

   说明:Ajax在Open一个链接时,如果把所有的参数都写在URL后面,这个是标准的get方式,如果传递的参数很多很长,可以传递的URL长度是有限制的(具体的限制由浏览器设定),而且项目中需要传递的数据是非常多的(局域网使用没有关系),因此只能通过post的方式进行传递参数。Ajax的post方式,是在send的时候作为send函数的参数进行发送的。而且需要设置一下Content-Type

1xmlhttp.open("post",url,true);
2//以下两行解决中文参数问题
3xmlhttp.setrequestheader("cache-control","no-cache"); 
4xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
5//传递参数
6xmlhttp.send("name="+name);

   

 

4.Ajax返回值的处理:或者说Ajax有哪些属性:

   问题:如上

   说明:Ajax的response有3个属性可以接收到数据:

    responseStream:原始接收到的数据,是流数据,没有进行过转码,如果程序中接收数据乱码,可以从这里获取数据自己进行转码;

    responseTEXT:转码后的数据;

    responseXML:转换成Dom;

    在这里有属性的详细讲解:链接1链接2,这2个链接中的内容加起来看比较齐全了

 

5.Ajax编码:
   Ajax是UTF-8编码的,传递参数的时候,前后台要进行匹配,否则容易乱码。

   返回数据处理:这里有说明如何设置response头进行处理返回数据。

   提交数据,需要使用escape进行编码;

 

6.Ajax发送请求,发现加号“+”都变成了空格:

   这个问题自己还是上网寻找解决方案才解决的。在这里找到解决方法:

   采用Ajax传递数据时,通常会将数据整理为data="var1=abc&var2=def"。而当数据中存在加号(+)或是连接符(&)时,服务器端接收数据时会有部分数据丢失现象。分析一下Ajax传递数据的格式与Javascript的语法不难发现:

1. “+”号:JavaScript解析为字符串连接符,所以服务器端接收数据时”+”会丢失。

2. “&”:JavaScript解析为变量连接符,所以服务器端接收数据时&符号以后的数据都会丢失。

解决办法也相当简单,只需要为+与&符号编码即可:function vchar(str) {

function vchar(str) {
str = str.replace(/\+/g, “%2B”);
str = str.replace(/\&/g, “%26″);
return str;
}

 

  所以最后往后台发送的Ajax post参数这样拼接的// 先escape编码,再用vchar替换加号和&号

var para = "docId=" + docId + "&docContent=" + vchar(escape(doccontent))

 

 7. 从responseXML中,获取不到数据:

    问题:数据返回responseXML中,通过responseXML.getElementsByTagName返回的list都是空的,没有数据,而看responseText中,内容是完好的xml数据。

   说明:在返回数据的后台,设置contentType为text/xml,问题解决

 

8.xml数据中,什么是CDATA不懂:
   这个是最基本的了,通过符号<![CDATA[    ]]>,可以包容xml特定的符号

 

9.IE和firefox之间的差别:

   对于IE和firefox中,差别很多了,看了一下几篇说明,有了一些了解:链接1, 链接2,以及以下几篇:123,4,5

 

10.还有一些基本的Http返回错误:

· 信息的 1xx 

· 成功的 2xx 

· 重定向 3xx 

· 客户端错误 4xx 

· 服务器错误 5xx

 

11. JS对JSon的处理:{ ’header’ : ’How to Handle the Ajax Response’, 来源

’description’ : ’An in-depth explanation of how to handle the Ajax response.’, 
’sourceUrl’ : ’http://www.krishadlock.com/clients/informit/AjaxResponse/AjaxResponse.zip’} 


if(ajax.checkReadyState(’body’, ’loading...’, ’loading...’, ’loading...’) == "OK") 
{ 
 eval("var response = ("+ajax.request.responseText+")"); 
 document.getElementById(’body’).innerHTML = "<b>" + response.header + "</b><br/>" 
+ response.description + "<br/><br/>" 
+ "<a href=’" + response.sourceUrl + "’>Download the source files</a>"; 
}

  JSON数据首先由JavaScript来分析(使用简单的eval()过程)。一旦数据被分析好了并建立了响应信息对象,我们就可以简单地通过名字来获取它们的响应信息值。 
 
或者通过response的JSOn对象直接


 

分享到:
评论

相关推荐

    最新ajax/javascript技术

    总结,AJAX结合JavaScript技术,为Web开发带来了革命性的改变,让Web应用更加动态、高效。随着前端框架(如React、Vue等)的发展,AJAX的使用变得更加便捷,同时其核心思想——异步数据交换,仍然是现代Web开发不可...

    总结一下这次用ajax/json实现SSH

    标题中的“总结一下这次用ajax/json实现SSH”指的是在Web应用程序中使用Ajax技术和JSON格式来实现与服务器端的安全Shell(SSH)通信。Ajax是Asynchronous JavaScript and XML的缩写,虽然XML在这里并不是必须的,它...

    JS 获取链接(url)参数以及锚链接(anchor)结合富ajax的应用(ajax前进/后退的问题)

    总结一下,本文主要介绍了如何使用JavaScript获取URL参数、处理锚链接以及解决富Ajax应用中的前进/后退问题。在实际开发中,可以结合jQuery和相关的History插件,配合服务器端脚本来实现更高效和流畅的Web应用。

    ajaxupload.js

    **AjaxUpload技术详解** ...总结来说,AjaxUpload是一个方便的JavaScript库,它通过Ajax实现了无刷新的文件上传,改善了用户体验。了解其工作原理和使用方法,可以帮助开发者在Web应用中实现高效、友好的文件上传功能。

    处理ajax返回的js代码

    总结来说,处理Ajax返回的JS代码涉及到创建和配置XMLHttpRequest对象,监听和处理响应,以及安全执行返回的JavaScript代码。在实际项目中,还需要结合其他Web开发技术,如HTML、CSS、jQuery等,并遵循最佳实践,确保...

    AJAX_技术总结_设计模式

    jQuery 提供了更简洁的 AJAX API,如 `$.ajax()`, `$.get()`, `$.post()` 等,简化了跨浏览器兼容性问题。 ### 6. Promise 和 AJAX 现代浏览器支持的 `fetch` API 使用 Promise 实现,提供了更优雅的异步处理方式...

    ajax + js 经典例子

    **Ajax(Asynchronous ...总结,Ajax和JavaScript的结合为Web开发提供了强大的工具,使得创建交互式、高性能的Web应用成为可能。通过理解并熟练运用上述知识点,开发者可以构建出更加流畅、用户友好的Web体验。

    AJAX电子书(总结)

    **AJAX电子书总结** AJAX(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。这种技术的出现极大地提升了用户体验,因为它允许后台与服务器进行数据交换,而用户界面...

    ajax+js的示例代码

    总结起来,AJAX和JavaScript的结合使用极大地提升了网页的交互性和用户体验。通过创建可编辑的表格和弹出框,开发者能够实现更灵活、响应更快的网页应用,而这些功能的实现离不开对AJAX和JavaScript的熟练掌握。对于...

    Ajax uri 乱码问题总结

    总结来说,解决Ajax URI乱码问题的关键在于理解和匹配浏览器的编码行为,并在服务器端进行相应的配置。通过以上策略,可以有效地解决大部分浏览器的乱码问题,实现更好的跨浏览器兼容性。然而,对于特定情况,可能还...

    AJAX 载入JS文件,载入CSS文件,载入JS函数,执行JS

    本文将详细介绍如何利用AJAX在ASP(Active Server Pages)应用中实现动态加载JavaScript文件、CSS文件以及执行JavaScript函数等功能。 #### 二、基础知识 在开始之前,我们需要了解几个基础概念: - **AJAX**:异步...

    Ajax-0.11 Ajax.js文件 Ajax.js例子

    总结来说,Ajax-0.11版本的`Ajax.js`文件和相关示例是学习和使用Ajax技术的重要资源,它展示了如何通过JavaScript实现与服务器的异步通信,以及如何利用返回的数据动态更新网页内容,从而提高网站的交互性和性能。

    ajax 纯JavaScript demo ajax示例

    总结起来,Ajax是提升网页动态交互性的重要工具,通过纯JavaScript实现Ajax,可以避免依赖额外的库或框架,提高页面性能。了解并熟练掌握Ajax的使用,对于前端开发者来说是必不可少的技能之一。在实际应用中,还可以...

    解决js ajax同步请求造成浏览器假死的问题

    总结一下,解决js ajax同步请求造成浏览器假死的问题的关键在于理解浏览器单线程的特性及其在执行同步请求时会阻塞UI线程的行为。开发者可以通过使用异步请求或将耗时的请求操作放入setTimeout等JavaScript定时器中...

    ajax知识点总结

    它的核心是利用JavaScript与服务器进行异步数据交换,通过XML或者JSON等格式传输数据,提升了用户体验,使得网页交互更加流畅。Ajax并非一种单一的技术,而是一组技术的综合应用,包括: 1. **JavaScript**:负责...

    AJAX技术总结.doc

    AJAX,即"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种用于构建交互式网页应用的网页开发技术。它结合了多种关键技术,包括XHTML+CSS用于表现,DOM(Document Object Model)用于动态显示与...

    dojo-0.3.1-ajax

    "dojo-0.3.1-ajax" 是一个与Dojo JavaScript库相关的版本,特别是涉及到其 AJAX(Asynchronous JavaScript and XML)功能的版本。Dojo是一个开源的JavaScript工具包,为Web开发提供了丰富的功能,包括DOM操作、动画...

    activemq 通过ajax发送接收消息简单例子

    总结起来,将ActiveMQ与Ajax结合使用,可以实现在Web应用中高效、异步地发送和接收消息。这不仅提高了应用的响应速度,也为用户提供了一种无刷新的交互体验。在实现过程中,需要注意配置ActiveMQ服务器、正确设置...

    ajax 前台js调用后台方法

    ### AJAX 前台JS调用后台方法详解 随着互联网技术的发展,前后端分离成为一种趋势,而异步请求作为前后端交互的重要手段之一,在实际开发中占据着重要的位置。AJAX(Asynchronous JavaScript and XML)是一种在无需...

    Ajax注册

    Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在用户注册场景中,Ajax可以提供更为流畅的用户体验,因为它允许后台与服务器异步通信,用户无需等待页面...

Global site tag (gtag.js) - Google Analytics