JQuery Post在首次尝试时不起作用,但所有后续尝试都没问题

时间:2012-11-24 14:22:23

标签: jquery-ui jquery

我有一个基于JQuery UI网站上的演示的JQuery UI模式表单对话框。这样做的目的是允许用户发布到社交网站。用户单击站点上的按钮,出现带有文本框的模态表单对话框,他们键入消息单击帖子,并通过调用PHP文件将结果写入MySQL数据库。

我遇到的问题是这在第一次尝试时从不起作用,但是第二次和所有下班后都没有问题。所以我真的需要帮助来解决这个问题。

这是我的模态形式:

<div id="dialog-form" title="Post Message">
<p class="validateTips">Enter your message here.</p>
<form>
    <textarea name="message" id="message" cols="50" rows="10" class="text ui-widget-content ui-corner-all"></textarea>
</form>

这是JQuery(在相同的php文件中,基于JQuery UI演示):

    $(document).ready(function() {
   //$(function() {
    // a workaround for a flaw in the demo system (http://dev.jqueryui.com/ticket/4375), ignore!
    $( "#dialog:ui-dialog" ).dialog( "destroy" );

    var message = $( "#message" ),
        allFields = $( [] ).add( message ),
        tips = $( ".validateTips" );

    function updateTips( t ) {
        tips
            .text( t )
            .addClass( "ui-state-highlight" );
        setTimeout(function() {
            tips.removeClass( "ui-state-highlight", 1500 );
        }, 500 );
    }

    function checkLength( o, n, min, max ) {
        if ( o.val().length > max || o.val().length < min ) {
            o.addClass( "ui-state-error" );
            updateTips( "Length of " + n + " must be between " +
                min + " and " + max + "." );
            return false;
        } else {
            return true;
        }
    }

    $( "#dialog-form" ).dialog({
        autoOpen: false,
        height: 300,
        width: 350,
        modal: true,
        buttons: {
            "Post It": function() {
                var bValid = true;
                allFields.removeClass( "ui-state-error" );
                bValid = bValid && checkLength( message, "message", 1, 144 );

                if ( bValid ) {
                   $.post("_scripts/db_postmsg.php", message, function(response){
                       alert(response);
                   })
                   $( this ).dialog( "close" );
                   location.reload();
                }
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        },
        close: function() {
            allFields.val( "" ).removeClass( "ui-state-error" );
        }
    });

    $( "#postmsg" )
        .button()
        .click(function() {
            $( "#dialog-form" ).dialog( "open" );
        });
});

以下是名为的

的PHP文件(db_postmsg.php)
    if(!isset($_SESSION)) {session_start();}
try {   
    if (isset($_POST['message']) && isset($_SESSION['useid'])) {
        require_once('library.php');
        $msg = htmlentities($_POST['message']);
        $postdata = array(
            'net_userid' => $_SESSION['useid'],
            'net_post' => $msg);
        $dbWrite->insert('messageposts', $postdata);
    } else {
        echo "No message set";
    }
}
catch (exception $e) {
    echo $e->getMessage();
}

使用Zend Framework完成对数据库的写入,该库在library.php。

中设置

我知道代码的工作方式从第二次尝试开始就可以正常运行。我只是需要帮助才能理解为什么它在第一次尝试时不起作用。

感谢。

0 个答案:

没有答案
相关问题