我可以在$ .post请求中使用jQuery的serialize()和一个额外的变量吗?

时间:2009-10-03 20:46:38

标签: jquery

目前,我有这一行:

$.post("submitmail.php", $("#contactform").serialize(), recvMailStatus);

我是jQuery的新手,所以这可能是一个荒谬的愚蠢问题 但是我正在使用或不使用javascript来使用这个项目,所以如果使用此函数提交表单,我希望submitmail.php只是回显它是否成功。如果表单刚提交并重定向到submitmail.php,我希望它显示除白色屏幕以外的其他内容,黑色文本说“邮件已成功发送”。要做到这一点,我想我只会post一个额外的变量“fromjs”或其他东西,以便页面可以相应地渲染自己。最好的方法是什么?

3 个答案:

答案 0 :(得分:7)

您可以将其附加到您要发布到的地址:

$.post(
    "submitmail.php?formjs=some_value", 
    $("#contactform").serialize(), 
    recvMailStatus
);

或:

$.post(
    "submitmail.php", 
    $("#contactform").serialize() + '&formjs=some_value', 
    recvMailStatus
);

答案 1 :(得分:1)

最好的方法是使用$ .ajax函数,如下所示:

$.ajax({
   type: "POST",
   url: "submitmail.php",
   success: function(msg){
     alert(msg);
   }
 });

您可以修改它以显示其他类型的窗口,JQuery有一些关于警报自定义的漂亮插件。此外,您需要捕获表单的提交,并避免重定向您的页面。

答案 2 :(得分:0)

我知道这是旧的,但另一种方式是例如:

当用户点击一个按钮时,它会序列化一个表单并将2个变量添加到它将发送给PHP的列表中。之后,PHP会响应并发回信息以显示为警报。类似的东西:

$('#send').click(function() {
    var regname = $('#regname').val();
    var regnameid = $('#regnameid').val();
    $.post('ext/engine.php', $('#regform').serialize() + {regnameid: regnameid, regname: regname}, function(data) { alert(data); });

});