Javascript 使用jquery和DOM访问表单元素
这是表格Javascript 使用jquery和DOM访问表单元素,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,这是表格 <form method="post"> <input type="hidden" name="resulttype" value="Create"> <table> <tr> <td>Name</td> <td><input type="text" id="name
<form method="post">
<input type="hidden" name="resulttype" value="Create">
<table>
<tr>
<td>Name</td>
<td><input type="text" id="name" value="Abhishek"/></td>
</tr>
<tr>
<td>User Name</td>
<td><input type="text" id="username" name="username" value="AbhishekSimion"></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" id="email" name="email" value="a@a.com"></td>
</tr>
<tr>
<td>Department</td>
<td><input type="text" id="department" name="department"></td>
</tr>
<tr><td colspan="2"><input type="button" id="button" value="Done!"></td></tr>
</table>
</form>
为什么我会在我的警报框中收到一条消息“name=null&email=undefined”?这里怎么了
注意:我使用的是jqueryv1.5.2
var x = document.getElementById("name");
var email = $("input#email").val();
到
此外,本部分:
var x = $("#name");
var email = $("#email").val();
var dataString = 'name='+ x + '&email=' + email;
需要在调用callme()函数之前执行以下操作:
var dataString;
$(function() {
$("#button").click(function() {
var x = $("#name");
var email = $("#email").val();
dataString = 'name='+ x + '&email=' + email;
callme();
});
});
改变
到
此外,本部分:
var x = $("#name");
var email = $("#email").val();
var dataString = 'name='+ x + '&email=' + email;
需要在调用callme()函数之前执行以下操作:
var dataString;
$(function() {
$("#button").click(function() {
var x = $("#name");
var email = $("#email").val();
dataString = 'name='+ x + '&email=' + email;
callme();
});
});
试试这个
var myname = $('#name').val()
var mymail = $('#email').val();
你也可以像下面这样使用
数据:{name:myname,email:mymail}
var msg = $.ajax({
type: "POST",
url: "/temp/AjaxPostSend",
data: { name: myname, email: mymail }
async: false,
success: function(html){
alert( "Data Saved: " + msg );
}
}).responseText;
更新
试一试
然后var myname=$('#myname').val()
用于发送日期超过邮政使用
data: $('#yourformID').serialize(),
试试这个
var myname = $('#name').val()
var mymail = $('#email').val();
你也可以像下面这样使用
数据:{name:myname,email:mymail}
var msg = $.ajax({
type: "POST",
url: "/temp/AjaxPostSend",
data: { name: myname, email: mymail }
async: false,
success: function(html){
alert( "Data Saved: " + msg );
}
}).responseText;
更新
试一试
然后var myname=$('#myname').val()
用于发送日期超过邮政使用
data: $('#yourformID').serialize(),
因为
“x”中的值是一个对象而不是字符串,我认为“$(“input#email”)”的语法是错误的。请尝试$(“:input[id='email']”).val()
因为
“x”中的值是一个对象而不是字符串,我认为“$(“input#email”)”的语法是错误的。请尝试$(“:input[id='email']”).val()
至少email
值应该有效
在任何情况下,都不要手动创建字符串。将数据设置为包含以下值的对象:
data: {name: $('#name').val(), email: $('#email').val()},
// or
data: $('#yourformID').serialize(),
这样,jQuery将负责正确的转义
还要注意,ID必须是唯一的。如果在页面上方有其他具有相同ID的元素,它将无法工作。然后更改ID
更新:
您的代码流不正确。本部分:
var x = document.getElementById("name");
var email = $("input#email").val();
var dataString = 'name='+ x + '&email=' + email;
将在页面完成加载之前执行。这意味着(a)元素还不可用,(b)即使元素可用,用户也无法输入任何信息
您必须在发送表单时读取值:
$(function() {
$("#button").click(callme);
function callme() {
$.ajax({
type: "POST",
url: "/temp/AjaxPostSend",
data: {name: $('#name').val(), email: $('#email').val()},
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}
});
还要注意
var msg = $.ajax({...}).responseText;
将无法工作,因为Ajax请求是异步的。这意味着callme()
将在Ajax响应可用之前返回。响应文本作为success
回调的参数提供
更正:我看到了async:false
,但我的大脑似乎有点错误;)在这种情况下,上述说法确实有效。但是您应该避免同步Ajax(应该称为Sjax)调用,因为它会阻塞客户端。至少email
值应该可以工作
在任何情况下,都不要手动创建字符串。将数据设置为包含以下值的对象:
data: {name: $('#name').val(), email: $('#email').val()},
// or
data: $('#yourformID').serialize(),
这样,jQuery将负责正确的转义
还要注意,ID必须是唯一的。如果在页面上方有其他具有相同ID的元素,它将无法工作。然后更改ID
更新:
您的代码流不正确。本部分:
var x = document.getElementById("name");
var email = $("input#email").val();
var dataString = 'name='+ x + '&email=' + email;
将在页面完成加载之前执行。这意味着(a)元素还不可用,(b)即使元素可用,用户也无法输入任何信息
您必须在发送表单时读取值:
$(function() {
$("#button").click(callme);
function callme() {
$.ajax({
type: "POST",
url: "/temp/AjaxPostSend",
data: {name: $('#name').val(), email: $('#email').val()},
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}
});
还要注意
var msg = $.ajax({...}).responseText;
将无法工作,因为Ajax请求是异步的。这意味着callme()
将在Ajax响应可用之前返回。响应文本作为success
回调的参数提供
更正:我看到了async:false
,但我的大脑似乎有点错误;)在这种情况下,上述说法确实有效。但是您应该避免同步Ajax(应称为Sjax)调用,因为它会阻止客户端。不确定为什么电子邮件会给您未定义的值,但对于名称,它应该如下所示:
var x = document.getElementById("name").value;
或
不确定为什么电子邮件会给您未定义的值,但对于名称,它应该如下所示:
var x = document.getElementById("name").value;
或
要使用纯JavaScript获取输入值,必须访问名为value
的变量
var x = document.getElementById("name").value;
您的第二个变量应该按预期工作,但是可以忽略选择器的输入,因为ID总是唯一的,并且可以为您节省一些字节
var email = $("#email").val();
另外,还有一种更简单的方法可以使用ajax发送表单。序列化表单。注意数据:…
var msg = $.ajax({
type: "POST",
url: "/temp/AjaxPostSend",
data: $("form").serialize(),
async: false,
success: function(html){
alert( "Data Saved: " + msg );
}
}).responseText;
要使用纯JavaScript获取输入值,必须访问名为value
的变量
var x = document.getElementById("name").value;
您的第二个变量应该按预期工作,但是可以忽略选择器的输入,因为ID总是唯一的,并且可以为您节省一些字节
var email = $("#email").val();
另外,还有一种更简单的方法可以使用ajax发送表单。序列化表单。注意数据:…
var msg = $.ajax({
type: "POST",
url: "/temp/AjaxPostSend",
data: $("form").serialize(),
async: false,
success: function(html){
alert( "Data Saved: " + msg );
}
}).responseText;
可以序列化表单并使用ajax发送,而不是手动连接所有值。可以序列化表单并使用ajax发送,而不是手动连接所有值。我得到“name=[object object]&email=undefined”我得到“name=[object object]&email=undefined”我得到这个“name=undefined&email=undefined”在这里试试看,只有电子邮件是有效的,它在我的项目中也不起作用,也就是说,在我的机器上如果你第一次看到的消息当然是空的。问题是这个事件的绑定将在bowser调用整个页面之前执行。制作一个更简单的方法,只显示在事件文档中执行的警报。就绪。我还收到消息“name=[object object]&email=undefined”。我说的是,方法“getElemntsById()”返回的是一个对象,而不是字符串。你想要的是“x.value”。请看@Felix Kling的回复,这个问题有一个很好的答案。我得到这个“name=undefined&email=undefined”试试这里只有email起作用,它在我的项目中也不起作用,也就是说,在我的机器上如果你看到第一页的消息