var data = 'kk':'mm','nn':'xx';
var params = "{" + data + "}";
var httpReq=new Ajax.Request(strUrl,
{method: 'post',
asynchronous: false,
parameters: eval('('+params+')'),
requestHeaders: {dynenc:"UTF-8"},
onComplete:function(oriReq){
var responseDoc = oriReq.responseXML;
document.getElementById("e1").innerHTML = "";
document.getElementById("e2").value = "";
}
});
return httpReq.responseText;
这里是protype框架的ajax的写法,传递的参数可以放在strUrl中,例如 xxAction.action?kk=‘。。’&mm='asdjkf'这样,但是由于这样对参数的长度有一定的限制,所以当参数很多时,我们只能用上面的方式来传参数,在某些情况下参数的个数是不确定的,说以我们只有把参数先拼接成字符串,像这样var a = “{” + 'kk':'mm','nn':'xx' + “}”,但是如果我们直接把这个参数用ajax传到后台,action中是去不到值的, 因为parameters这里需要的是一个json对象,而我们却传了一个字符串过去,当然后台取不到,所以要把var a = “{” + 'kk':'mm','nn':'xx' + “}”这样的字符串转换成json对象才行,怎么转呢:var b = eval("(" + a + ")") 这样转就可以了。