提交表单时,我想异步调用带有一些order.php
参数的电子邮件发送脚本$_GET
。
jQuery $.get()
函数未执行,控制台中没有显示错误。
HTML标记:
<form name="submit" id="orderconfirm" action="somefile.php">
<input type="hidden" name="orderkey" id="orderkey" value="somekey"/>
<input type="text" name="email" id="orderemail"/>
<input type="submit" value="submit"/>
</form>
jQuery脚本:
$(document).ready(function() {
$('#orderconfirm').submit(function() {
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var url = 'order.php?key=' + key + '&mail=' + email;
$.get(url);
});
});
这真的很奇怪,因为类似的脚本(也是$.get()
和一个简单的URL)工作得很好。我也确定order.php
脚本工作正常,路径正确。问题在于,某些方式$.get(url)
未执行且未发送任何请求。
提交处理程序也可以正常工作 - 例如警报有效。
有什么想法吗?
答案 0 :(得分:3)
使用preventDefault()
$(document).ready(function() {
$('#orderconfirm').submit(function(event) {
event.preventDefault();
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var url = 'order.php?key=' + key + '&mail=' + email;
$.get(url);
});
});
您还可以使用return false;
来限制表单提交
$(document).ready(function() {
$('#orderconfirm').submit(function(event) {
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var url = 'order.php?key=' + key + '&mail=' + email;
$.get(url);
return false;
});
});
在$.get
尝试此操作后提交表单
$(document).ready(function() {
$('#orderconfirm').submit(function(event) {
event.preventDefault();
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var url = 'order.php?key=' + key + '&mail=' + email;
$.get(url,function(){$('#orderconfirm').submit()});
});
});
答案 1 :(得分:2)
因为您没有阻止默认的浏览器行为。添加event.preventDefault
方法:
$('#orderconfirm').submit(function(event) {
event.preventDefault();
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var url = 'order.php?key=' + key + '&mail=' + email;
$.get(url);
});
答案 2 :(得分:1)
试试这个
$('#orderconfirm').submit(function(e) {
e.preventDefault();
})
并使用有效的$.get
$.get( "order.php", {'key':key,'mail': email});
答案 3 :(得分:1)
使用return false
或e.preventDefault()之类的,
$('#orderconfirm').submit(function(e) {
e.preventDefault();
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var url = 'order.php?key=' + key + '&mail=' + email;
$.get(url);
});
答案 4 :(得分:1)
$(document).ready(function() {
$('#orderconfirm').submit(function(e) {
e.preventDefault();
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var url = 'order.php?key=' + key + '&mail=' + email;
$.get(url);
});
});
问题出现在表单提交的浏览器默认行为上。你需要防止执行默认值。 您可以选择更改“提交”按钮的类型并尝试。
答案 5 :(得分:1)
你有两种解决方法。
1 。使用e.preventDefault();
阻止浏览器的默认行为提交表单。
$('#orderconfirm').submit(function(e) { // 'e' here is new
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var url = 'order.php?key=' + key + '&mail=' + email;
$.get(url);
e.preventDefault(); // and this line is new
});
<强> 2 即可。或者只需将submit
类型更改为button
。
<input type="button" value="submit"/>
顺便说一句,您可以将值作为参数而不是字符串。 jQuery.get()
$('#orderconfirm').submit(function(e) {
var key = $('#orderkey').val();
var email = $('#orderemail').val();
var page = 'order.php';
$.get(page, {mail: email, key: key}); // this line
e.preventDefault();
});
答案 6 :(得分:0)
试试这个
$.get( "order.php", { key: key , mail: email } );