【问题标题】:question about .load jQuery function关于 .load jQuery 函数的问题
【发布时间】:2011-03-19 12:19:12
【问题描述】:

我正在使用 .load 函数,但遇到了一些问题:

<form id="register_frm" method="post" action = "/login/register/"> 
    <fieldset>
        <legend>New User:</legend> 
        <div>
        <label for="id_email">Email</label>
        <input id="id_email" type="text" name="email" maxlength="30" /> 
        </div>      
        <div> 
        <label for="id_conf_email">Confirm Email</label> 
        <input id="id_conf_email" type="text" name="conf_email" maxlength="30" /> 
        </div> 
    </fieldset> 
<input name = "register" type="submit" value="Register" /> 
</form>

我正在尝试编写一个 .load 脚本,如果 2 个电子邮件地址匹配,它将显示成功方法。

function register_js() {
    $('#register_frm').load('/register/confirm');
    return false;
    }

$(document).ready(function () {
    ('#register_frm').submit(register_js);
    });
  1. 如何更改代码以使.load 提交post 请求而不是get
  2. 当我覆盖注册按钮时,如何使.load 提交email 和conf_email 字段以便我可以在服务器端进行验证?

【问题讨论】:

    标签: django jquery


    【解决方案1】:

    你不想使用load 你想使用post

    $(document).ready(function () {
        $('#register_frm').submit(function() {
            var $form = $(this);
            // if you want to get the url from the action use
            // var url = $form.attr('action');
            var url = '/register/confirm';
            $.post( url, $form.serialize(), function(html) {
                $form(html);
            });
            return false;
        });
    });
    

    请注意,如果您不重用 cmets 中所述的 $form 变量,您可以简单地在 post 的参数中使用 $(this).serialize()

    【讨论】:

    • 我正在使用 .load 函数,因为我正在返回应显示的“成功消息”,而不是网页的 register_frm 部分。 $.post 有可能吗?
    • @Rami - 是的,post 可以接收 html、json 等。如果不是 html,您只需要指定类型。如果是,只需使用 jQuery 对象上的 html 方法来替换表单的内容或使用 replaceWith 完全替换表单(可能更好,但在我更新的示例中未显示)。
    • @Rami - FWIW,loadpost 都只是 ajax 方法的便捷函数。 load 本质上是一个使用 GET 语义的 ajax 调用,其中成功回调将内容放在应用 load 的元素中。 post 显然使用 POST 语义,并由您提供回调,它可以轻松插入从服务器传递的任何新内容。
    • 感谢您的见解和回答,这帮助我正确看待事物并更好地了解如何使用 jquery 工具。
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 2012-07-28
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2023-04-01
    相关资源
    最近更新 更多