给跪了,serialize()获取不到数据

小新s23 2016-02-01 05:16:07

<div style="margin: 0 auto;width: 400px">
<div id="userInfo">
<form>
<table>
<tr><td><code>登录名</code></td><td><input name="userName" id="userName" class="form-control" placeholder="登录名" type="text"><br></td></tr>
<tr><td><code>密码</code></td><td><input name="userPsd" id="userPsd" class="form-control" placeholder="密码" type="password"><br></td></tr>
<tr><td><code>姓氏</code></td><td><input name="userRealName" id="userRealName" class="form-control" placeholder="姓氏" type="text"><br></td></tr>
<tr><td><code>电话</code></td><td><input name="userPhone" id="userPhone" class="form-control" placeholder="电话" type="text"><br></td></tr>
<tr><td><code>邮箱</code></td><td><input name="userEmail" id="userEmail" class="form-control" placeholder="邮箱" type="text"><br></td></tr>
<tr><td><code>地址</code></td><td><input name="userAddress" id="userAddress" class="form-control" placeholder="地址" type="text"><br></td></tr>
<tr><td><code>邮编</code></td><td><input name="userPostal" id="userPostal" class="form-control" placeholder="邮编" type="text"><br></td></tr>
<tr><td><code>专家类型</code></td><td><input name="userType" id="userType" class="form-control" placeholder="专家类型" type="text"><br></td></tr>
<tr><td><code>专家介绍</code></td><td><textarea name="userIntroduce" id="userIntroduce" class="form-control" placeholder="专家介绍" rows="5" cols="28"></textarea><br></td></tr>
</table>
</form>
</div>
<input onclick="exp_infoSetting(confirm('是否修改?'))" type="button" class="btn btn-lg btn-primary btn-block" value="修改">
</div>


function exp_infoSetting(ele1){
if(ele1==false){
return false;
}
alert($("#userInfo").serialize());
$.ajax({
url:"http://localhost:8080/struts/expert/click_editInfo.action",
data:$("#userInfo").serialize(),
async:true,
cathe:false,
contentType:"application/x-www-form-urlencoded;charset=utf-8",
type:"POST",
success: function (msg) {
alert(msg);
}
})
}
...全文
8501 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
风飘摇123 2019-07-16
  • 打赏
  • 举报
回复
刚才我也遇到了这个问题,给form表单起了一个id,结果发现用form的id作为选择器:$('formId').serializeArray()获取的数组为空,而采用标签form作为选择器:$('form').serializeArray()则可以获取到数据。估计是jquery中关于这个方法的处理并不是很好,可以看看源码是怎么处理的。
你看咩啊 2019-05-16
  • 打赏
  • 举报
回复 1
引用 23 楼 般若之道 的回复:
input 必须加上name属性
还是你这个答案靠谱
般若之道 2018-04-13
  • 打赏
  • 举报
回复 2
input 必须加上name属性
bboykey1995 2017-09-21
  • 打赏
  • 举报
回复 1
已解决 如果是POST 需要加上 contentType: "application/json
bboykey1995 2017-09-21
  • 打赏
  • 举报
回复
之前搞错了有缓存。那样写不行 。亲测 这样可以 $.ajax({ type : "POST", //使用post 后台不能获取数据 url : posturl, processData : true, //必须false才会自动加上正确的Content-Type data : $("#Form").serialize(), // contentType: "application/json", success : function(data) { }})
bboykey1995 2017-09-21
  • 打赏
  • 举报
回复
我碰到一个类似的问题。也是alert能出来数据。但是通过ajax就是提交不到后台。HTTP请假里面都没有数据。发现是因为用的POST不行。改成成了GET就可以。不知道为何
  • 打赏
  • 举报
回复
我也碰到了这个问题,我把之前正确的那个页面整个from放过来就没问题,然后还原就有问题,我怀疑是我的from里面写错了什么,但是找了半天又找不到,后面,我干脆把正确页面的from拿过来改一下from里面的内容,又可以用了,测试看来应该是from表单里面的问题。
KK3K2005 2016-12-22
  • 打赏
  • 举报
回复
引用 17 楼 anjolan 的回复:
[quote=引用 10 楼 KK3K2005 的回复:] [quote=引用 2 楼 u013408258 的回复:] 为什么好好地就是获取不到数据啊,有大神来看下么,我找了好久都没有找到问题,最近麻烦的全是这种不起眼的小问题阻碍进度,真的心塞,好心人来看一下啊
手动写代码取一下上传数据 也就 5分钟的时间 我只能 呵呵 [/quote] 像你这种人怎么能知道页面代码间接是多爽的事情????[/quote] 等你写满10w行js 在讨论爽的问题
anjolan 2016-12-21
  • 打赏
  • 举报
回复
引用 10 楼 KK3K2005 的回复:
[quote=引用 2 楼 u013408258 的回复:] 为什么好好地就是获取不到数据啊,有大神来看下么,我找了好久都没有找到问题,最近麻烦的全是这种不起眼的小问题阻碍进度,真的心塞,好心人来看一下啊
手动写代码取一下上传数据 也就 5分钟的时间 我只能 呵呵 [/quote] 像你这种人怎么能知道页面代码间接是多爽的事情????
KK3K2005 2016-02-02
  • 打赏
  • 举报
回复
引用 2 楼 u013408258 的回复:
为什么好好地就是获取不到数据啊,有大神来看下么,我找了好久都没有找到问题,最近麻烦的全是这种不起眼的小问题阻碍进度,真的心塞,好心人来看一下啊
手动写代码取一下上传数据 也就 5分钟的时间 我只能 呵呵
KK3K2005 2016-02-02
  • 打赏
  • 举报
回复
引用 12 楼 u013408258 的回复:
[quote=引用 9 楼 u013116426 的回复:] [quote=引用 8 楼 u013408258 的回复:] [quote=引用 7 楼 u013116426 的回复:] 都可以啊。是不是jq库版本不支持
我在另一个页面同样是用的一个jQuery版本,都可以的,但是不只怎么的就出现这么个问题了,jq版本是支持的[/quote] 贴全部代码[/quote]

<head>
    <meta charset="UTF-8">
    <script type="text/javascript">
	    $(document).ready(function(){
	        exp_list_jumpReady("infoSetting", null,"exp_infoSetting");
	    })
    </script>
</head>

<div style="margin: 0 auto;width: 400px">
	<div id="userInfo">
	    <form>
	        <table>
	            <tr><td><code>登录名</code></td><td><input name="userName" id="userName" class="form-control" placeholder="登录名" type="text"><br></td></tr>
	            <tr><td><code>密码</code></td><td><input name="userPsd" id="userPsd" class="form-control" placeholder="密码" type="password"><br></td></tr>
	            <tr><td><code>姓氏</code></td><td><input name="userRealName" id="userRealName" class="form-control" placeholder="姓氏" type="text"><br></td></tr>
	            <tr><td><code>电话</code></td><td><input name="userPhone" id="userPhone" class="form-control" placeholder="电话" type="text"><br></td></tr>
	            <tr><td><code>邮箱</code></td><td><input name="userEmail" id="userEmail" class="form-control" placeholder="邮箱" type="text"><br></td></tr>
	            <tr><td><code>地址</code></td><td><input name="userAddress" id="userAddress" class="form-control" placeholder="地址" type="text"><br></td></tr>
	            <tr><td><code>邮编</code></td><td><input name="userPostal" id="userPostal" class="form-control" placeholder="邮编" type="text"><br></td></tr>
	            <tr><td><code>专家类型</code></td><td><input name="userType" id="userType" class="form-control" placeholder="专家类型" type="text"><br></td></tr>
	            <tr><td><code>专家介绍</code></td><td><textarea name="userIntroduce" id="userIntroduce" class="form-control" placeholder="专家介绍" rows="5" cols="28"></textarea><br></td></tr>
	        </table>
	    </form>
    </div>
        <input onclick="exp_infoSetting(confirm('是否修改?'))" type="button" class="btn btn-lg btn-primary btn-block" value="修改"> 
</div>



/*
 * 对用户的信息进行修改的点击事件
 */
function exp_infoSetting(ele1){
	if(ele1==false){
		return false;
	}
	alert($("#userInfo").serialize());
	$.ajax({
    	url:"http://localhost:8080/struts/expert/click_editInfo.action",
    	data:$("#userInfo").serialize(),
        async:true,
        cathe:false,
        type:"POST",
        success: function (msg) {
            alert(msg);
        }
    })
}
引用 10 楼 KK3K2005 的回复:
[quote=引用 2 楼 u013408258 的回复:] 为什么好好地就是获取不到数据啊,有大神来看下么,我找了好久都没有找到问题,最近麻烦的全是这种不起眼的小问题阻碍进度,真的心塞,好心人来看一下啊
手动写代码取一下上传数据 也就 5分钟的时间 我只能 呵呵 [/quote] 我有强迫症,手动写获取上传数据也是可以,但是如果能解决清楚一个问题也没有什么坏处吧[/quote] 直接 断点调试 $("#userInfo").serialize(),这一行就可以了 js代码是文本代码 大部分代码问题 直接调试就可以了
留校_察看 2016-02-02
  • 打赏
  • 举报
回复
这样吧,你自己在本地用jq1.9.x的版本测试。看能不能正常获取数据,如果只有这一样肯定是可以的。
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>angularjs</title>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.js"></script>
<script type="text/javascript" src="jq.js"></script>
</head>
<body>
<form action="" id="form">
<input type="text" name="id" />
<input type="submit" id="sub"/>
</form>
<script type="text/javascript">
$("#sub").on('click', function(){
console.log($("#form").serialize())
return false;
})
</script>
</body>
</html>

小新s23 2016-02-02
  • 打赏
  • 举报
回复
引用 11 楼 zgxjj 的回复:
还有个问题,看看是不是jq和其它js库产生的兼容问题,jquery的serialize方法就是对表单内的Input进行序列化,如果只有jq库和表单的话,使用$("#div").serialize();肯定是可以的,如果连最基本的序列化都无法进行,那就是版本库问题了,id无论放div还是form上,都是对它下面的input进行序列化,没必要纠结。
如果是$("form").serialize()就可以序列化,但是$("#divId").serialize()或者$("#formId")就不行。楼上说的对,手动写都可以很快解决的,但是我还是想弄清楚原因

<div id="teamInfo">
		<form>
			团队名称<br>
			<input id="teamName" class="form-control" placeholder="团队名称" type="text"><br>
			团队介绍<br>
			<textarea id="teamNote" class="form-control" placeholder="团队介绍" rows="5" cols="28"></textarea>
			<br>
		</form>
	</div>
	<input type="button" onclick="confirm('是否保存设置')"
		class="btn btn-success" value="保存">
这是另一端html的代码,同样是这样操作的,但是就可以serialize()到,这是版本冲突引起的么
小新s23 2016-02-02
  • 打赏
  • 举报
回复
引用 9 楼 u013116426 的回复:
[quote=引用 8 楼 u013408258 的回复:] [quote=引用 7 楼 u013116426 的回复:] 都可以啊。是不是jq库版本不支持
我在另一个页面同样是用的一个jQuery版本,都可以的,但是不只怎么的就出现这么个问题了,jq版本是支持的[/quote] 贴全部代码[/quote]

<head>
    <meta charset="UTF-8">
    <script type="text/javascript">
	    $(document).ready(function(){
	        exp_list_jumpReady("infoSetting", null,"exp_infoSetting");
	    })
    </script>
</head>

<div style="margin: 0 auto;width: 400px">
	<div id="userInfo">
	    <form>
	        <table>
	            <tr><td><code>登录名</code></td><td><input name="userName" id="userName" class="form-control" placeholder="登录名" type="text"><br></td></tr>
	            <tr><td><code>密码</code></td><td><input name="userPsd" id="userPsd" class="form-control" placeholder="密码" type="password"><br></td></tr>
	            <tr><td><code>姓氏</code></td><td><input name="userRealName" id="userRealName" class="form-control" placeholder="姓氏" type="text"><br></td></tr>
	            <tr><td><code>电话</code></td><td><input name="userPhone" id="userPhone" class="form-control" placeholder="电话" type="text"><br></td></tr>
	            <tr><td><code>邮箱</code></td><td><input name="userEmail" id="userEmail" class="form-control" placeholder="邮箱" type="text"><br></td></tr>
	            <tr><td><code>地址</code></td><td><input name="userAddress" id="userAddress" class="form-control" placeholder="地址" type="text"><br></td></tr>
	            <tr><td><code>邮编</code></td><td><input name="userPostal" id="userPostal" class="form-control" placeholder="邮编" type="text"><br></td></tr>
	            <tr><td><code>专家类型</code></td><td><input name="userType" id="userType" class="form-control" placeholder="专家类型" type="text"><br></td></tr>
	            <tr><td><code>专家介绍</code></td><td><textarea name="userIntroduce" id="userIntroduce" class="form-control" placeholder="专家介绍" rows="5" cols="28"></textarea><br></td></tr>
	        </table>
	    </form>
    </div>
        <input onclick="exp_infoSetting(confirm('是否修改?'))" type="button" class="btn btn-lg btn-primary btn-block" value="修改"> 
</div>



/*
 * 对用户的信息进行修改的点击事件
 */
function exp_infoSetting(ele1){
	if(ele1==false){
		return false;
	}
	alert($("#userInfo").serialize());
	$.ajax({
    	url:"http://localhost:8080/struts/expert/click_editInfo.action",
    	data:$("#userInfo").serialize(),
        async:true,
        cathe:false,
        type:"POST",
        success: function (msg) {
            alert(msg);
        }
    })
}
引用 10 楼 KK3K2005 的回复:
[quote=引用 2 楼 u013408258 的回复:] 为什么好好地就是获取不到数据啊,有大神来看下么,我找了好久都没有找到问题,最近麻烦的全是这种不起眼的小问题阻碍进度,真的心塞,好心人来看一下啊
手动写代码取一下上传数据 也就 5分钟的时间 我只能 呵呵 [/quote] 我有强迫症,手动写获取上传数据也是可以,但是如果能解决清楚一个问题也没有什么坏处吧
留校_察看 2016-02-02
  • 打赏
  • 举报
回复
还有个问题,看看是不是jq和其它js库产生的兼容问题,jquery的serialize方法就是对表单内的Input进行序列化,如果只有jq库和表单的话,使用$("#div").serialize();肯定是可以的,如果连最基本的序列化都无法进行,那就是版本库问题了,id无论放div还是form上,都是对它下面的input进行序列化,没必要纠结。
小新s23 2016-02-02
  • 打赏
  • 举报
回复
各位多谢了,搞了好半天是因为有一个相同的id,然后就冲突了,结果绕了好大一个弯子,多谢了留校察大哥的帮助,结贴结贴
___紫菜 2016-02-01
  • 打赏
  • 举报
回复
引用 8 楼 u013408258 的回复:
[quote=引用 7 楼 u013116426 的回复:] 都可以啊。是不是jq库版本不支持
我在另一个页面同样是用的一个jQuery版本,都可以的,但是不只怎么的就出现这么个问题了,jq版本是支持的[/quote] 贴全部代码
小新s23 2016-02-01
  • 打赏
  • 举报
回复
引用 7 楼 u013116426 的回复:
都可以啊。是不是jq库版本不支持
我在另一个页面同样是用的一个jQuery版本,都可以的,但是不只怎么的就出现这么个问题了,jq版本是支持的
___紫菜 2016-02-01
  • 打赏
  • 举报
回复
都可以啊。是不是jq库版本不支持
小新s23 2016-02-01
  • 打赏
  • 举报
回复
引用 5 楼 u013116426 的回复:
楼上对的 alert($("form").serialize());
真不管用,我试过了,不管是在form上还是div上都获取不到,不是defined,是空白的
加载更多回复(5)

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧