【问题标题】:Insert jQuery UI Dialog Modal Form data into mySQL将 jQuery UI 对话框模态表单数据插入 mySQL
【发布时间】:2012-12-21 04:09:07
【问题描述】:

我正在使用 jQuery UI 对话框在我的网站上注册新用户。对话框工作正常。但是,当我提交表单时,AJAX 调用没有做任何事情。我已经在网上搜索了一段时间,但找不到有效的解决方案。这是我目前的代码:

var username=$("#username").val();
var password=$("#password").val();
var checkpassword=$("#checkpassword").val();
var email=$("#email").val();
var user_level=$("#user_level").val();
var date_created=$("#date_created").val();

$( "#dialog-form" ).dialog({
    autoOpen: false,
    height: 500,
    width: 600,
    modal: true,
    buttons: {
        "Registreren": function() {
            var bValid = true;
            allFields.removeClass( "ui-state-error" );

                bValid = bValid && checkLength( username, "username", 3, 16 );
                bValid = bValid && checkLength( email, "email", 6, 80 );
                bValid = bValid && checkLength( password, "password", 4, 16 );
                bValid = bValid && checkLength( checkpassword, "checkpassword", 4, 16 );
                bValid = bValid && checkLength( user_level, "user_level", 0, 2 );
                bValid = bValid && checkRegexp( username, /^[a-z]([0-9a-z_])+$/i, "error" );
                bValid = bValid && checkRegexp( email, "error");
                bValid = bValid && checkRegexp( password, /^([0-9a-zA-Z])+$/, "error" );
                bValid = bValid && checkRegexp( checkpassword, /^([0-9a-zA-Z])+$/, "error" );

            if ( bValid ) {
                $.post({
                url: 'register.php',
                data: 
                        {  
                            username: username,
                            password: password,
                            checkpassword: checkpassword,
                            email: email,
                            user_level: user_level,
                            date_created: date_created
                        }//end data
                })//end AJAX post
           }//End if
        }//End function
    }//end buttons
});//end dialog

我的表单只是一个带有指定 ID 的简单 HTML 输入表单

例如输入用户名:

<form name="registeracc" id="registeracc" action="register.php" method="post">
<input required type="text" id="username" name="username" class="text ui-widget-content ui-corner-all" />
</form>     

我在网上找到了几个针对这个问题的“修复”,但它们似乎对我不起作用。

例如:

data: $('#registeracc :input').serialize(),
error: function(xml, status, error) {
$('#registeracc').html('<p>???</p>');

【问题讨论】:

  • data: $('#registeracc').serialize(), 会将表单序列化为名称|值对。返回的字符串需要以正确的方式使用,但我看不到足够的代码来提供建议。
  • 您是否验证了按钮点击代码是否被调用?验证后,在 Firebug 或 Chrome 开发工具中观察 ajax 请求,看看什么/什么没有被发布。
  • 它卡在了一些验证行上,删除它们后它没有调用任何东西
  • 取出if ( bValid ) { 看看是否有任何改变。还要检查您的错误控制台。
  • 谢谢,这并没有解决我原来的问题,但它解决了其他困扰我的问题;)

标签: php jquery html ajax user-interface


【解决方案1】:

我不确定,但根据jQuery API Reference试试

$.post(
    'register.php',
    {  
        username: username,
        password: password,
        checkpassword: checkpassword,
        email: email,
        user_level: user_level,
        date_created: date_created
    }//end data
)//end AJAX post

【讨论】:

  • +1 虽然这不能回答问题,但它仍然解决了您以后会遇到的问题。详细说明这个答案:OPs .post() 语法错误,它采用参数列表而不是具有属性的对象(与 $.ajax 不同)。
【解决方案2】:

找到解决我问题的答案:

$.post({
url: 'register.php',
data: 
{  
   username: username,
   password: password,
   checkpassword: checkpassword,
   email: email,
   user_level: user_level,
   date_created: date_created
}

应该是:

$.post("register.php", $("#registeracc").serialize());

【讨论】:

    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多