struts2 + jquery ajax提交参数问题

时间:2021-01-02 13:35:52
function clickButton()
{
var params = {
  pid:$('#pid').attr('value'),
   client.name:$('#name').attr('value')
};
$.ajax({
  url: "addClientNode.action",
          type:"post",           
  dataType:"json",
  data: params,
  success:callbackFun
});
}
function callbackFun(data)
{
  alert("ok"); 
}

struts2中使用jquery,怎样解决“client.name”这样的参数名,ie会认为有错误
而Firefox却能够正常运行,请有经验的前辈提点建议。

16 个解决方案

#1


在ff下貌似也是错误的吧

#2


晕,工程没发布成功,对 ff下也不行,
这个参数我用struts2标签传参时name的名字是client.name
因为在我的action种有一个client对象的属性,我要把值赋到这个对象的name中去,
用ajax提交该怎么做呢?

#3


该回复于2010-08-06 10:51:12被版主删除

#4


引用楼主 virus2010 的回复:
function clickButton()
{
var params = {
  pid:$('#pid').attr('value'),
 client.name:$('#name').attr('value')
};
$.ajax({
  url: "addClientNode.action",
          type:"post",         
  dataType:"json",
  data: params,
  success:callbackFun
});
}
function callbackFun(data)
{
  alert("ok");
}

struts2中使用jquery,怎样解决“client.name”这样的参数名,ie会认为有错误
而Firefox却能够正常运行,请有经验的前辈提点建议。


楼主,我知道你想说什么。这个问题我也遇到过,没有好的办法,不能像你这样用client.name这样提交。这里是ajax,不是form表单,不支持这样的写法。
解决办法:
1、在你的struts2里面写一个私有变量,private String name; ajax提交后在你的action的方法中,把这个name赋值给你的对象client的name属性。
2、不用ajax提交,用form表单提交。可能你会在form表单提交前做<input type="text" />标签的非空校验,你可以这么写,代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<script type="text/javascript">
/**
 * author:develop_design_level
 * date: 2009-11-02
 * @param {Object} id
 */
function $(id){
if(document.getElementById){
return document.getElementById(id);
}else{
return document.all.id;
}
}
window.onload = function(){//DOM加载完毕后执行
$('btnId').onclick = commitAction;
};

function commitAction(){
var user = $('userId').value;
if (user == '') {//判空
alert('Please enter the userName!');
$('userId').focus();
}else{
$('formId').submit();//提交
}
}
</script>
</head>
<body>
<form id="formId">
用户名:<input type="text" name="client.name" id="userId"><br/>
<input type="button" id="btnId" value="提交">
</form>
</body>
</html>


我也用struts2,遇到这类的情况,我只能绕过去。你要是ajax提交,无非想不刷新页面,停留在本页。那么你就用第一种方法。

=== 结贴,给分 ===
得到满意的答案,立即结贴给分,是一种良好的习惯和美德

#5


这个问题我也碰到过,自己试出一种方法,不知好不好。
对client.name加入双引号
即改成
var params = {
  pid:$('#pid').attr('value'),
  "client.name":$('#name').attr('value')
}; 
就可以了,反正ie和Firefox都能运行

#6



var params = { 
  pid:$('#pid').attr('value'), 
  "client.name":$('#name').attr('value') 
};
楼上的引起来是对的,ajax参数是键值对的方式。key/value,key可以是字符串的。
{"key": value, "key2": value2, key3: "string"}
都是可以的。

#7


var params = { 
  pid:$('#pid').attr('value'), 
  [client.name]:$('#name').attr('value') 
};
这样试下行不行??

#8


五楼是正确的。

#9


引用 5 楼 caiangfei 的回复:
这个问题我也碰到过,自己试出一种方法,不知好不好。
 对client.name加入双引号
 即改成
 var params = {
   pid:$('#pid').attr('value'),
   "client.name":$('#name').attr('value')
 };
 就可以了,反正ie和Firefox都能运行


正解 我用的就是这个方法

#10


学习了!

#11


正在学ajax

#12


这方法不错,学习下

#13


struts2 + jquery ajax提交参数问题

#14


struts2 + jquery ajax提交参数问题ajax新手,来学习的

#15


struts2 + jquery ajax提交参数问题

#16


学习了、、、

#1


在ff下貌似也是错误的吧

#2


晕,工程没发布成功,对 ff下也不行,
这个参数我用struts2标签传参时name的名字是client.name
因为在我的action种有一个client对象的属性,我要把值赋到这个对象的name中去,
用ajax提交该怎么做呢?

#3


该回复于2010-08-06 10:51:12被版主删除

#4


引用楼主 virus2010 的回复:
function clickButton()
{
var params = {
  pid:$('#pid').attr('value'),
 client.name:$('#name').attr('value')
};
$.ajax({
  url: "addClientNode.action",
          type:"post",         
  dataType:"json",
  data: params,
  success:callbackFun
});
}
function callbackFun(data)
{
  alert("ok");
}

struts2中使用jquery,怎样解决“client.name”这样的参数名,ie会认为有错误
而Firefox却能够正常运行,请有经验的前辈提点建议。


楼主,我知道你想说什么。这个问题我也遇到过,没有好的办法,不能像你这样用client.name这样提交。这里是ajax,不是form表单,不支持这样的写法。
解决办法:
1、在你的struts2里面写一个私有变量,private String name; ajax提交后在你的action的方法中,把这个name赋值给你的对象client的name属性。
2、不用ajax提交,用form表单提交。可能你会在form表单提交前做<input type="text" />标签的非空校验,你可以这么写,代码如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<script type="text/javascript">
/**
 * author:develop_design_level
 * date: 2009-11-02
 * @param {Object} id
 */
function $(id){
if(document.getElementById){
return document.getElementById(id);
}else{
return document.all.id;
}
}
window.onload = function(){//DOM加载完毕后执行
$('btnId').onclick = commitAction;
};

function commitAction(){
var user = $('userId').value;
if (user == '') {//判空
alert('Please enter the userName!');
$('userId').focus();
}else{
$('formId').submit();//提交
}
}
</script>
</head>
<body>
<form id="formId">
用户名:<input type="text" name="client.name" id="userId"><br/>
<input type="button" id="btnId" value="提交">
</form>
</body>
</html>


我也用struts2,遇到这类的情况,我只能绕过去。你要是ajax提交,无非想不刷新页面,停留在本页。那么你就用第一种方法。

=== 结贴,给分 ===
得到满意的答案,立即结贴给分,是一种良好的习惯和美德

#5


这个问题我也碰到过,自己试出一种方法,不知好不好。
对client.name加入双引号
即改成
var params = {
  pid:$('#pid').attr('value'),
  "client.name":$('#name').attr('value')
}; 
就可以了,反正ie和Firefox都能运行

#6



var params = { 
  pid:$('#pid').attr('value'), 
  "client.name":$('#name').attr('value') 
};
楼上的引起来是对的,ajax参数是键值对的方式。key/value,key可以是字符串的。
{"key": value, "key2": value2, key3: "string"}
都是可以的。

#7


var params = { 
  pid:$('#pid').attr('value'), 
  [client.name]:$('#name').attr('value') 
};
这样试下行不行??

#8


五楼是正确的。

#9


引用 5 楼 caiangfei 的回复:
这个问题我也碰到过,自己试出一种方法,不知好不好。
 对client.name加入双引号
 即改成
 var params = {
   pid:$('#pid').attr('value'),
   "client.name":$('#name').attr('value')
 };
 就可以了,反正ie和Firefox都能运行


正解 我用的就是这个方法

#10


学习了!

#11


正在学ajax

#12


这方法不错,学习下

#13


struts2 + jquery ajax提交参数问题

#14


struts2 + jquery ajax提交参数问题ajax新手,来学习的

#15


struts2 + jquery ajax提交参数问题

#16


学习了、、、