2012-2-4 18:39 Saturday  

前台方法

<img src2="真实地址" src="占位图片" />

加个正在下载中的背景的话用样式 {background:url(/app/webroot/images/loading.gif) no-repeat center;}

 

//lazyload
function lazyload(option){var settings={defObj...

阅读全文>>

如果它没有放大效果,请注意是否是用样式控制的图片大小

 

附JQZoom下载地址:http://www.mind-projects.it/projects/jqzoom/

阅读全文>>

2012-1-30 18:42 Monday  
<script>
$().ready(function(){
    $('#showEle').click(function(){
        parent.document.getElementsByTagName("frameset")[1].cols ="190,*";
    })
    $('#hideEle').click(function...

阅读全文>>

官网地址:http://jquery.com/demo/thickbox/

 

用法就是如下了:

<html>
<head>
<script type="text/javascript" src="jquery-latest.js"></script>
<script type="text/javascript" src=...

阅读全文>>

2012-1-30 18:35 Monday  

Js

function showbatchbuy(pid){
    $("#p"+pid).show();
    clearTimeout(batchbuy);
}

function hidebatchbuy(pid){
    batchbuy = setTimeout(function(){
        $("#p"+pid).hide();
    },500);
}

触发的

onmouseover="showbatchbuy({$item.id});" onmouseout="hidebatchbuy({$item.id});"

层上面的

onmousemove="showbatchbuy({$item.id});" onmouseout="hidebatchbuy({$item.id});"

2012-1-30 18:35 Monday  
function checkSelect() {

var flag = 0;

$("input[name='edit[]']:checkbox").each(function () {

    if ($(this).attr("checked")) {

        flag += 1;

    }

})

if (flag > 0)

return true;

else{

alert('没有选中一个');

return false;

}

}

2012-1-30 18:29 Monday  
<script type="text/javascript">
/**
 * jQuery.query - Query String Modification and Creation for jQuery
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2009/8/13
 *
 * @author Blair Mitchelmore
 * @version 2.1.7
 *
 **/
new function(settings) {
  // Various Settings
  var $separator = settings.separator || '&';
  var $spaces = settings.spaces === false ? false : true;
  var $suffix = settings.suffix === false ? '' : '[]';
  var $prefix = settings.prefix === false ? false : true;
  var $hash = $prefix ? settings.hash === true ? "#" : "?" : "";
  var $numbers = settings.numbers === false ? false : true;
 
  jQuery.query = new function() {
    var is = function(o, t) {
      return o != undefined && o !== null && (!!t ? o.constructor == t : true);
    };
    var parse = function(path) {
      var m, rx = /\[([^[]*)\]/g, match = /^([^[]+)(\[.*\])?$/.exec(path), base = match[1], tokens = [];
      while (m = rx.exec(match[2])) tokens.push(m[1]);
      return [base, tokens];
    };
    var set = function(target, tokens, value) {
      var o, token = tokens.shift();
      if (typeof target != 'object') target = null;
      if (token === "") {
        if (!target) target = [];
        if (is(target, Array)) {
          target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));
        } else if (is(target, Object)) {
          var i = 0;
          while (target[i++] != null);
          target[--i] = tokens.length == 0 ? value : set(target[i], tokens.slice(0), value);
        } else {
          target = [];
          target.push(tokens.length == 0 ? value : set(null, tokens.slice(0), value));
        }
      } else if (token && token.match(/^\s*[0-9]+\s*$/)) {
        var index = parseInt(token, 10);
        if (!target) target = [];
        target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);
      } else if (token) {
        var index = token.replace(/^\s*|\s*$/g, "");
        if (!target) target = {};
        if (is(target, Array)) {
          var temp = {};
          for (var i = 0; i < target.length; ++i) {
            temp[i] = target[i];
          }
          target = temp;
        }
        target[index] = tokens.length == 0 ? value : set(target[index], tokens.slice(0), value);
      } else {
        return value;
      }
      return target;
    };
   
    var queryObject = function(a) {
      var self = this;
      self.keys = {};
     
      if (a.queryObject) {
        jQuery.each(a.get(), function(key, val) {
          self.SET(key, val);
        });
      } else {
        jQuery.each(arguments, function() {
          var q = "" + this;
          q = q.replace(/^[?#]/,''); // remove any leading ? || #
          q = q.replace(/[;&]$/,''); // remove any trailing & || ;
          if ($spaces) q = q.replace(/[+]/g,' '); // replace +'s with spaces
         
          jQuery.each(q.split(/[&;]/), function(){
            var key = decodeURIComponent(this.split('=')[0] || "");
            var val = decodeURIComponent(this.split('=')[1] || "");
           
            if (!key) return;
           
            if ($numbers) {
              if (/^[+-]?[0-9]+\.[0-9]*$/.test(val)) // simple float regex
                val = parseFloat(val);
              else if (/^[+-]?[0-9]+$/.test(val)) // simple int regex
                val = parseInt(val, 10);
            }
           
            val = (!val && val !== 0) ? true : val;
           
            if (val !== false && val !== true && typeof val != 'number')
              val = val;
           
            self.SET(key, val);
          });
        });
      }
      return self;
    };
   
    queryObject.prototype = {
      queryObject: true,
      has: function(key, type) {
        var value = this.get(key);
        return is(value, type);
      },
      GET: function(key) {
        if (!is(key)) return this.keys;
        var parsed = parse(key), base = parsed[0], tokens = parsed[1];
        var target = this.keys[base];
        while (target != null && tokens.length != 0) {
          target = target[tokens.shift()];
        }
        return typeof target == 'number' ? target : target || "";
      },
      get: function(key) {
        var target = this.GET(key);
        if (is(target, Object))
          return jQuery.extend(true, {}, target);
        else if (is(target, Array))
          return target.slice(0);
        return target;
      },
      SET: function(key, val) {
        var value = !is(val) ? null : val;
        var parsed = parse(key), base = parsed[0], tokens = parsed[1];
        var target = this.keys[base];
        this.keys[base] = set(target, tokens.slice(0), value);
        return this;
      },
      set: function(key, val) {
        return this.copy().SET(key, val);
      },
      REMOVE: function(key) {
        return this.SET(key, null).COMPACT();
      },
      remove: function(key) {
        return this.copy().REMOVE(key);
      },
      EMPTY: function() {
        var self = this;
        jQuery.each(self.keys, function(key, value) {
          delete self.keys[key];
        });
        return self;
      },
      load: function(url) {
        var hash = url.replace(/^.*?[#](.+?)(?:\?.+)?$/, "$1");
        var search = url.replace(/^.*?[?](.+?)(?:#.+)?$/, "$1");
        return new queryObject(url.length == search.length ? '' : search, url.length == hash.length ? '' : hash);
      },
      empty: function() {
        return this.copy().EMPTY();
      },
      copy: function() {
        return new queryObject(this);
      },
      COMPACT: function() {
        function build(orig) {
          var obj = typeof orig == "object" ? is(orig, Array) ? [] : {} : orig;
          if (typeof orig == 'object') {
            function add(o, key, value) {
              if (is(o, Array))
                o.push(value);
              else
                o[key] = value;
            }
            jQuery.each(orig, function(key, value) {
              if (!is(value)) return true;
              add(obj, key, build(value));
            });
          }
          return obj;
        }
        this.keys = build(this.keys);
        return this;
      },
      compact: function() {
        return this.copy().COMPACT();
      },
      toString: function() {
        var i = 0, queryString = [], chunks = [], self = this;
        var encode = function(str) {
          str = str + "";
          if ($spaces) str = str.replace(/ /g, "+");
          return encodeURIComponent(str);
        };
        var addFields = function(arr, key, value) {
          if (!is(value) || value === false) return;
          var o = [encode(key)];
          if (value !== true) {
            o.push("=");
            o.push(encode(value));
          }
          arr.push(o.join(""));
        };
        var build = function(obj, base) {
          var newKey = function(key) {
            return !base || base == "" ? [key].join("") : [base, "[", key, "]"].join("");
          };
          jQuery.each(obj, function(key, value) {
            if (typeof value == 'object')
              build(value, newKey(key));
            else
              addFields(chunks, newKey(key), value);
          });
        };
       
        build(this.keys);
       
        if (chunks.length > 0) queryString.push($hash);
        queryString.push(chunks.join($separator));
       
        return queryString.join("");
      }
    };
   
    return new queryObject(location.search, location.hash);
  };
}(jQuery.query || {}); // Pass in jQuery.query as settings object
</script>
<script type="text/javascript">
window.location='index.php?id='+$.query.get('id');;
</script>

2012-1-30 18:08 Monday  
网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数。
参数parameter由于用类似URL的形式传过去 , 所以别直接就那样赋值
以下是对变量值的URL编码总结 : 意见用encodeURIComponent() , GET 和POST方法都能够发送过去
Java编程script中存在几种对URL字符串停止编码的窍门:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的功能各不相同。
escape() 窍门:
采用ISO Latin字符集对指定的字符串停止编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx各式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此窍门编码的字符: @ * / +
encodeURI() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。
不会被此窍门编码的字符:! @ # $& * ( ) = : / ; ? + '
encodeURIComponent() 窍门:
把URI字符串采用UTF-8编码各式转化成escape各式的字符串。与encodeURI()相比,那个窍门将对更多的字符停止编码,比如 / 等字符。所以假如字符串里面包含了URI的几个部份的话,别用那个窍门来停止编码,否则 / 字符被编码之后URL将呈现错误。
不会被此窍门编码的字符:! * ( ) '

因此,对于汉文字符串来说,假如不期望把字符串编码各式转化成UTF-8各式的(比如原页面和目的页面的charset是一致的时候),只需求应用 escape。假如你的页面是GB2312或者更多有联系的编码,而接受参数parameter的页面是UTF-8编码的,就要采用encodeURI或 者encodeURIComponent。

2012-1-30 18:05 Monday  

1.document.write("");为 输出语句
2.JS中的注释为//
3.传统的HTML文档顺序是:document->html->(head,body)
4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)
5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value)
6.一个小写转大写的JS: document.getElementById("output").value = document.getElementById

("input").value.toUpperCase();
7.JS中的值类型:String,Number,Boolean,Null,Object,Function
8.JS中的字符型转换成数值型:parseInt(),parseFloat()
9.JS中的数字转换成字符型:(""+变量)
10.JS中的取字符串长度是:(length)
11.JS中的字符与字符相连接使用+号.
12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<=
13.JS中声明变量使用:var来进行声明
14.JS中的判断语句结构:if(condition){}else{}
15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop}
16.循环中止的命令是:break
17.JS中的函数定义:function functionName([parameter],...){statement[s]}
18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.
19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self
20.状态栏的设置:window.status="字符";
21.弹出提示信息:window.alert("字符");
22.弹出确认框:window.confirm();
23.弹出输入提示框:window.prompt();
24.指定当前显示链接的位置:window.location.href="URL"
25.取出窗体中的所有表单的数量:document.forms.length
26.关闭文档的输出流:document.close();
27.字符串追加连接符:+=
28.创建一个文档元素:document.createElement(),document.createTextNode()
29.得到元素的方法:document.getElementById()
30.设置表单中所有文本型的成员的值为空:
var form = window.document.forms[0]
for (var i = 0; i

if (form.elements[i].type == "text"){
form.elements[i].value = "";
}
}
31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中

返回TRUE或FALSE)
32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length
33.单选按钮组判断是否被选中也是用checked.
34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加

上.selectedIndex来确定被选中的值)
35.字符串的定义:var myString = new String("This is lightsword");
36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase();
37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到.
38.取字符串中指定位置的一个字符:StringA.charAt(9);
39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6);
40.数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最

在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor

(Math.random()*(n+1))返回随机数
41.定义日期型变量:var today = new Date();
42.日期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得

到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期

几,dateObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到

秒,dateObj.setTime(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth(val)设置

月,dateObj.setDate(val)设置日,dateObj.setDay(val)设置星期几,dateObj.setHours设置小

时,dateObj.setMinutes(val) 设置分,dateObj.setSeconds(val)设置秒 [注意:此日期时间从0开始计]
43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames

["frameName"].ObjFuncVarName,frameName.ObjFuncVarName
44.parent代表父亲对象,top代表最顶端对象
45.打开子窗口的父窗口为:opener
46.表示当前所属的位置:this
47.当在超链接中调用JS函数时用:(javascript:)来开头后面加函数名
48.在老的浏览器中不执行此JS:
49.引用一个文件式的JS:

50.指定在不支持脚本的浏览器显示的HTML: 

51.当超链和ONCLICK事件都有时,则老版本的浏览器转

向a.html,否则转向b.html.例:

href="a.html">dfsadf 52.JS的内建对象

有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,

RegExp,String,SyntaxError,TypeError,URIError 53.JS中的换行:\n 54.窗口全屏大小:
55.JS中的all代表其下层的全部元素

56.JS中的焦点顺序:document.getElementByid("表单元素").tabIndex = 1
57.innerHTML的值是表单元素的值:如

"how are you"

,则innerHTML的值就是:how are you
58.innerTEXT的值和上面的一样,只不过不会把这种标记显示出来.
59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状态.
60.isDisabled判断是否为禁止状态.disabled设置禁止状态
61.length取得长度,返回整型数值
62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc
63.window.focus()使当前的窗口在所有窗口之前.
64.blur()指失去焦点.与FOCUS()相反.
65.select()指元素为选中状态.
66.防止用户对文本框中输入文本:onfocus="this.blur()"
67.取出该元素在页面中出现的数量:document.all.tags("div(或其它HTML标记符)").length
68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless()
69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文

字.';
70.添加到收藏夹:external.AddFavorite("http://www.52blogger.com","龙哥");
71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法

为:window.onerror = handleError;
72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续.
73.JS中的self指的是当前的窗口
74.JS中状态栏显示内容:window.status="内容"
75.JS中的top指的是框架集中最顶层的框架
76.JS中关闭当前的窗口:window.close();
77.JS中提出是否确认的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}
78.JS中的窗口重定向:window.navigate("http://www.52blogger.com");
79.JS中的打印:window.print()
80.JS中的提示输入框:window.prompt("message","defaultReply");
81.JS中的窗口滚动条:window.scroll(x,y)
82.JS中的窗口滚动到位置:window.scrollby
83.JS中设置时间间隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或

setTimeout
84.JS中的模态显示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);
85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and

hope you will stay longer.";}} window.onbeforeunload=verifyClose;
86.当窗体第一次调用时使用的文件句柄:onload()
87.当窗体关闭时调用的文件句柄:onunload()
88.window.location的属性: protocol(http:),hostname(www.example.com),port(80),host

(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳转到相应的锚记),href(全部

的信息)
89.window.location.reload()刷新当前页面.
89-1.parent.location.reload()刷新父亲对象(用于框架)
89-2.opener.location.reload()刷新父窗口对象(用于单开窗口)
89-3.top.location.reload()刷新最顶端对象(用于多开窗口)
90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回

第几页,也可以使用访问过的URL)
91.document.write()不换行的输出,document.writeln()换行输出
92.document.body.noWrap=true;防止链接文字折行.
93.变量名.charAt(第几位),取该变量的第几位的字符.
94."abc".charCodeAt(第几个),返回第几个字符的ASCii码值.
95.字符串连接:string.concat(string2),或用+=进行连接
96.变量.indexOf("字符",起始位置),返回第一个出现的位置(从0开始计算)
97.string.lastIndexOf(searchString[,startIndex])最后一次出现的位置.
98.string.match(regExpression),判断字符是否匹配.
99.string.replace(regExpression,replaceString)替换现有字符串.
100.string.split(分隔符)返回一个数组存储值.
101.string.substr(start[,length])取从第几位到指定长度的字符串.
102.string.toLowerCase()使字符串全部变为小写.
103.string.toUpperCase()使全部字符变为大写.
104.parseInt(string[,radix(代表进制)])强制转换成整型.
105.parseFloat(string[,radix])强制转换成浮点型.
106.isNaN(变量):测试是否为数值型.
107.定义常量的关键字:const,定义变量的关键字:var

window对象有两个主要的定时方法,分别是setTimeout 和 setInt 他们的语法基本上相同,但是完成的功能取有区别。
  setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。

  setInterval方法则是表示间隔一定时间反复执行某操作。

  如果用setTimeout实现setInerval的功能,就需要在执行的程序中再定时调用自己才行。如果要清除计数器需要根据使用的方法不同,调用不同的清除方法:

例如:tttt=setTimeout('northsnow()',1000);

clearTimeout(tttt);

或者:

tttt=setInterval('northsnow()',1000);

clearInt(tttt);

setTimeout只有在调用的是自己的时候才跟setInterval一个含义,表示的一种延迟某段时间后的递归调用,如果setTimeout调用的是另一个方法的话,那就不能达到递归的效果了,表示只调用一次,而setInterval表示反复调用

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/courseware/archive/2007/12/10/1926195.aspx

虽然可以使用以下js来得到text
document.getElementById("lnkId").options[document.getElementById("lnkId").selectedIndex].text
但是总觉得烦,不爽,还是用jquery吧

<select name="lnkId" id="lnkId" style="width:100px;">
                            <option value="">-选择联系人-</option>
                            <option value="">-asdfwef-</option>
<option value="">-asdfasdf-</option>
<option value="">-选asdfas择efasdfasdf联系人-</option>
                        </select>


使用这一句就好了
alert($("#lnkId>option:selected").get(0).text);

2012-1-30 17:58 Monday  
function Serialize(obj){   

switch(obj.constructor){   
        case Object:   
            var str = "{";   
            for(var o in obj){   
                str += o + ":" + Serialize(obj[o]) +",";   
            }   
            if(str.substr(str.length-1) == ",")   
                str = str.substr(0,str.length -1);   
             return str + "}";   
             break;   
         case Array:               
             var str = "[";   
             for(var o in obj){   
                 str += Serialize(obj[o]) +",";   
             }   
             if(str.substr(str.length-1) == ",")   
                 str = str.substr(0,str.length -1);   
             return str + "]";   
             break;   
         case Boolean:   
             return "\"" + obj.toString() + "\"";   
             break;   
         case Date:   
             return "\"" + obj.toString() + "\"";   
             break;   
         case Function:   
             break;   
         case Number:   
             return "\"" + obj.toString() + "\"";   
             break;    
         case String:   
             return "\"" + obj.toString() + "\"";   
             break;       
     }   
}

<script>

var start=0;

var end=0;

function add(){

var textBox = document.getElementById("ta");

var pre = textBox.value.substr(0, start);

var post = textBox.value.substr(end);

textBox.value = pre + document.getElementById("inputtext").value + post;

}

function savePos(textBox){

//如果是Firefox(1.5)的话,方法很简单

if(typeof(textBox.selectionStart) == "number"){

start = textBox.selectionStart;

end = textBox.selectionEnd;

}

//下面是IE(6.0)的方法,麻烦得很,还要计算上'\n'

else if(document.selection){

var range = document.selection.createRange();

if(range.parentElement().id == textBox.id){

// create a selection of the whole textarea

var range_all = document.body.createTextRange();

range_all.moveToElementText(textBox);

//两个range,一个是已经选择的text(range),一个是整个textarea(range_all)

//range_all.compareEndPoints()比较两个端点,如果range_all比range更往左(further to the left),则 //返回小于0的值,则range_all往右移一点,直到两个range的start相同。

// calculate selection start point by moving beginning of range_all to beginning of range

for (start=0; range_all.compareEndPoints("StartToStart", range) < 0; start++)

range_all.moveStart('character', 1);

// get number of line breaks from textarea start to selection start and add them to start

// 计算一下\n

for (var i = 0; i <= start; i ++){

if (textBox.value.charAt(i) == '\n')

start++;

}

// create a selection of the whole textarea

var range_all = document.body.createTextRange();

range_all.moveToElementText(textBox);

// calculate selection end point by moving beginning of range_all to end of range

for (end = 0; range_all.compareEndPoints('StartToEnd', range) < 0; end ++)

range_all.moveStart('character', 1);

// get number of line breaks from textarea start to selection end and add them to end

for (var i = 0; i <= end; i ++){

if (textBox.value.charAt(i) == '\n')

end ++;

}

}

}

document.getElementById("start").value = start;

document.getElementById("end").value = end;

}

</script>

<form action="a.cgi">

<table border="1" cellspacing="0" cellpadding="0">

<tr>

<td>start: <input type="text" id="start" size="3"/></td>

<td>end: <input type="text" id="end" size="3"/></td>

</tr>

<tr>

<td colspan="2">

<textarea id="ta" onKeydown="savePos(this)"

onKeyup="savePos(this)"

onmousedown="savePos(this)"

onmouseup="savePos(this)"

onfocus="savePos(this)"

rows="14" cols="50"></textarea>

</td>

</tr>

<tr>

<td><input type="text" id="inputtext" /></td>

<td><input type="button" onClick="add()" value="Add Text"/></td>

</tr>

</table>

</form> 

2012-1-30 17:56 Monday  

网上转的

今天遇到了一个Jquery提交数据量过大的时候后台获得的时候会截掉一部分,这个找了很久,在网上看到了这样的解释和方式:

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

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

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

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

function vchar(str) {
str = str.replace(/\+/g, "%2B");
str = str.replace(/\&/g, "%26");
return str;
}
var1 = "abc+kef";
var2 = "abc&kef";
var1 = vchar(var1);
var2 = vchar(var2);
alert(var1);
alert(var2);
使用jquery的话可以使用如下方式提交

var params = $('input, textarea').serialize();
$.ajax({
type: 'post',
url: 'xxxx.php',
data: params,
success: function(response){
       ......
}
});
上面的这个方法我试过了,不是很好用,之后我想到了JSON的方式提交,结果可以实现,效果很好,但是用JSON提交的时候要注意到这样的一个问题,JSON提交的数据时经过编码的,所以在后台要进行解码,我的后台是java,所以我用了这样的方式:
$.ajax({
type: 'post',
url: 'xxxx.action',
data: {arr1:arr1,arr2:arr2},//arr1就是你传递到后台的参数,用request获得,
success: function(response){
       ......
}
});
下面是对中文数据进行解码的代码
/**
   * Ajax数据解码
   * @return
   */
public String decodeAjax(String str) {
   if (MUtil.checkString(str)) {
try {
return java.net.URLDecoder.decode(str, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return null;
}
   }
   return null;
}

var val = $('#form1 input,#form1 textarea,#form1 select').serialize(),

post的时候,再直接 data:val,   就行了