<scrīpt Language="Javascrīpt">
<!--
// author:奔腾的心
// qq:7180001
function Ajax(OnError,OnState,OnDownloadEnd)
{
this.ErrorStr = null;
this.OnError = OnError;
this.OnState = OnState;
this.OnDownloadEnd = OnDownloadEnd;
this.method = "GET";
this.URL = null;
this.sync = true;
this.PostData = null
&nbs ......
前段时间写JSP,使用AJAX以POST方式提交数据,如果是中文字符提交就会乱码,后来写ASP时用到AJAX以POST方式提交数据,中文一样是乱码。搜索一下相关资料,问题应该是提交数据时是以UTF-8编码提交,所以接收时如果使用GB2312或者其它中文编码的话就会乱码。
使用GET方式提交数据的时候,中文问题很好解决,setRequestHeader("Content-Type","text/html; encoding=gb18030")就可以了。但这个方法在POST方式中却不起作用。大家都知道GET方式提交数据有长度限制,有时我们必须使用 POST方式来提交数据。
对于使用POST,JSP的解决方法如下:
使用escape(或encodeURI,两个函数都是JavaScript的函数,功能基本相同,可以查一下相关的帮助),但要使用两次,这个是关键。
初始页面内容如下(hello.jsp):
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>AJAX提交页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<script type="text/javascript">
function just ......
AJAX表单提交方法(JSON)
1./*****JAVA**************************************************************/
JAVA类中:
/*****JAVA**************************************************************/
2./*****struts.xml**************************************************************/
struts.xml文件中:
<action name="moveMailBox" class="mailBodyAction" method="moveMailBox">
<result type="json">
<param name="root">ajaxReturnMessage</param>
</result>
</action>
/*****struts.xml**************************************************************/
var param = "workNos="+workNos+"&radio1="+radio1+"&question1="+question1+"&radio2="+radio2+"&question2="+question2+"&radio3="+radio3+"&question3="+question3;
//以下是一post方法提交
Ext.Ajax.request({
&n ......
今天搞了我三四个小时的问题,终于找到解决方案了。哈哈。
在Ajax开发中,会遇到浏览器缓存内容的问题,比如,某个元素注册了鼠标事件(onmouseover),事件触发后会通过xmlhttprequest到服务器获取内容,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。
通常,这种请求都是xmlhttprequest发起的GET请求。根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。所以浏览器会对GET请求做缓存处理。
解决办法:
一. GET请求URL后附加字串,让服务器认为不是相同的请求。
例 “http://www.example.com/index.php?class=aitcle&page=5&_t=” + new Date().getTime()
二. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(”If-Modified-Since”,”0″)
三. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader(”Cache-Control”,”no-cache”);
四. 服务端响应请求时加 h ......
本文将使用AjaxToolkit中的“ PopupControlExtender , DynamicPopulateExtender , DragPanelExtender ”控件来构建一个弹出对话框,可以实现弹出对话框,对话框可拖动等功能。比较适合做每日一贴等效果
首先解释下下,三个控制的作用:
PopupControlExtender:是一个可以控制Popup载体的组件,它本身 并不会产生Popup控件,它的作用是控制Popup载体,例如panel,div等的显示.
DynamicPopulateExtender:是一个可以实现动态效果的组件.
DragPanelExtender:实现拖拽效果的组件.
首先我们需要创建一个Popup的载体,这里我们采用asp.net 的Panel控件, 具体代码如下:
<asp:Panel ID="pnlPopup" runat="server" CssClass="frame" Style="display: none" mce_Style="display: none">
<div class="overlay">
<asp:Panel ID="pnlHeader" runat="server" CssClass="header">
<asp:Label ID="Label1" runat="server" CssClass="msg" Text="Tip of the Day" />
......
经过整理和调试,Krabber 0.2.9版本正式发布了。
这个版本的特点是不仅仅可以执行AJAX网页并返回执行后的结果,还可以由抽取用户提供脚本进行执行,并返回执行用户的动作脚本后的结果。这一特性可以很好的解决需要进行AJAX翻页、延时加载等等问题。
另外由于精力有限,版本没有经过严格的测试,因此有问题请在这里留言,谢谢。
Krabber项目下载:Downloads : Krabber : kVitrail : senior
Krabber 0.2.9 由pinlin:senior编写,pinlin168#tom.com ......