{
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提交该怎么做呢?
这个参数我用struts2标签传参时name的名字是client.name
因为在我的action种有一个client对象的属性,我要把值赋到这个对象的name中去,
用ajax提交该怎么做呢?
#3
#4
楼主,我知道你想说什么。这个问题我也遇到过,没有好的办法,不能像你这样用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都能运行
对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')
};
这样试下行不行??
pid:$('#pid').attr('value'),
[client.name]:$('#name').attr('value')
};
这样试下行不行??
#8
五楼是正确的。
#9
正解 我用的就是这个方法
#10
学习了!
#11
正在学ajax
#12
这方法不错,学习下
#13
#14
ajax新手,来学习的
#15
#16
学习了、、、
#1
在ff下貌似也是错误的吧
#2
晕,工程没发布成功,对 ff下也不行,
这个参数我用struts2标签传参时name的名字是client.name
因为在我的action种有一个client对象的属性,我要把值赋到这个对象的name中去,
用ajax提交该怎么做呢?
这个参数我用struts2标签传参时name的名字是client.name
因为在我的action种有一个client对象的属性,我要把值赋到这个对象的name中去,
用ajax提交该怎么做呢?
#3
#4
楼主,我知道你想说什么。这个问题我也遇到过,没有好的办法,不能像你这样用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都能运行
对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')
};
这样试下行不行??
pid:$('#pid').attr('value'),
[client.name]:$('#name').attr('value')
};
这样试下行不行??
#8
五楼是正确的。
#9
正解 我用的就是这个方法
#10
学习了!
#11
正在学ajax
#12
这方法不错,学习下
#13
#14
ajax新手,来学习的
#15
#16
学习了、、、