0

コメントを挿入するために次のコードを使用しています。

<div id="2" class="789678">
    <div id="dynamic2">
        <span class="error" style="display:none">Please Enter Valid Data</span>
        <span class="success" style="display:none">Submitted Successfully</span>
        <form action="http://localhost/ci/index.php/#"
        method="post" accept-charset="utf-8" name="commentform" id="commentform">
            <div style="display:none">
                <input type="hidden" name="token" value="552e5dab8e50b8263c8b7ba548adaf5b">
            </div>
            <p>
                <label for="Name">Name</label>
                <br>
                <input type="text" name="name" value="" id="name" size="30" placeholder="Please Enter Name or Nick name"
                class="required">
            </p>
            <p>
                <label for="email">Email Address</label>
                <br>
                <input type="text" name="email" value="" id="email" size="30" placeholder="Enter Email Address"
                class="required">
            </p>
            <p>
                <label for="comment">comment</label>
                <br>
                <textarea name="content" cols="40" rows="5" id="content" col="180" placeholder="Post Your Comment"
                class="required"></textarea>
            </p>
            <input type="hidden" id="post_id" name="post_id" value="2">
            <input type="hidden" id="num" name="num" value="789678">
            <button name="button" type="reset" id="button" value="true">Add Comment</button>
        </form>
    </div>
    <input type="button" id="adcom" value="Add Comment" style="display: none; ">
</div>

以下は、ページを更新せずにページを送信するためのjQueryコードです。正しく機能していますが、機能していない検証を追加する必要があり、エラーも表示されません。

<script>
    $("#button").live("click", function (e) {
        e.preventDefault();
        $("#commentform").validate();
        var currentId = $(this).parent().parent().parent().attr('id');
        var num = $('#num').val();
        var email = $('#email').val();
        var post_id = $('#post_id').val();
        var name = $('#name').val();
        var content = $('#content').val();
        var token = $('input[name="token"]').val();
        var dataString = 'num=' + num + '&email=' + email + '&content_id=' + post_id + '&name=' + name + '&content=' + content + '&token=' + token;
        $.ajax({
            type: "POST",
            url: "http://localhost/ci/index.php/mobiles/mobile_insert_comment/",
            data: dataString,
            success: function (result) {
                $("#commentform").remove();
                //$("#dynamic"+currentId).text(' successfully submitted');
                $('.success').fadeIn(200).show();
                $('.error').fadeOut(200).hide();
            }
        });
        return false;
    });
</script>

私は次のjQuery検証プラグインを使用しています:

 <script type="text/javascript"
 src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
4

2 に答える 2

1

あなたの問題がjsFiddleでシミュレートされる可能性があります。

$.ajax({

        type: "POST",

            url: "http://localhost/ci/index.php/mobiles/mobile_insert_comment/",

            data: dataString,

        success: function(result) {

            $("#commentform").remove();

            //$("#dynamic"+currentId).text(' successfully submitted');

            $('.success').fadeIn(200).show();

             $('.error').fadeOut(200).hide();

                            }

        }).done(function (response) {

            console.log(response);

        });

レスポンスが JSON エンコードされている場合は、おそらく jQuery.parseJSON(response) を使用します。この AJAX 呼び出しの結果を確認すると、次のステップの正しい方向に進む可能性が高くなります。

于 2012-06-15T21:04:45.770 に答える
0

codeigniterにはフォーム検証クラスがあります。ここに良いチュートリアルがあります:http://codeigniter.com/user_guide/libraries/form_validation.html私はあなたがそれを見ることを提案します。フォームが検証するには、すべてのフィールドが検証に合格し、フォーム検証ルールに存在する必要があることを覚えておいてください。

  • コードを見ると、ボタンid ='button'type'reset'は奇妙に思えます。コメントを追加してから、javascript / ajaxハンドラーを使用して投稿データを作成し、サイトに送信します。

  • javascriptオブジェクト表記を使用して、ajax投稿のデータオブジェクトをデータオブジェクトとして送信することは悪い考えではありません。例:var data = {'email':$('#email')。val()、'name':$('#name')。val()}など。文字列はGET文字列としてフォーマットされているように見えました。 、POSTではありません。

于 2012-07-12T12:51:25.327 に答える