表单提交时不执行jQuery $ .get()

时间:2014-01-28 13:07:28

标签: javascript jquery html form-submit

提交表单时,我想异步调用带有一些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)未执行且未发送任何请求。

提交处理程序也可以正常工作 - 例如警报有效。

有什么想法吗?

7 个答案:

答案 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);
    });    
});

Documentation

您还可以使用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()});
    });    
});

Documentation

答案 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 falsee.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 } );