0

検証のためのフォーム送信を防ぐために ajax を実行しました

ajaxの戻り値を隠し変数に格納して検証を行っています...

私のelseループでfalseを返すため、私のフォームは送信されません

Ajaxが成功した後、jqueryからフォームを送信していますが、取得しています

キャッチされていないタイプ エラー: オブジェクト # のプロパティ 'submit' は関数ではありません 助けてください .....

test.php から取得している隠しフィールドに値 1 を格納しているだけです ....

しかし、コンソールは $("#foo")[0].submit(); でエラーを表示します。

2回目に送信をクリックすると、JavaScriptが非表示の値= 1をチェックし、真のループに入ります...その後、送信を取得します

前もって感謝します

<form id="foo" name="foo" action="pop.php"  method="get">
    <label for="bar">A bar</label>
    <input id="bar" name="bar" type="text" value="" />
    <input id="bar1" name="bar1" type="text" value="" />
    <input type="hidden" name="statushidden" id="statushidden" value=""/>
    <input type="submit" value="submit" id="submit" />
</form>

$(document).ready(function() {

    $("#submit").click(function() {
        var $form = $(this);
        var status = validdata();

        if (document.getElementById("statushidden").value=="1")
        {
            alert("true loop");
            return true;
        }
        else
        {
            alert("false loop");
            return false;
        }

    });

    function validdata()
    {
        var url = "test.php"; 
        $.ajax({
           type: "POST",
           beforeSend: function(){},
           url: url,
           data: $("#foo").serialize(), // serializes the form's elements.
           success: function(data)
           {
               document.getElementById("statushidden").value=data;
               console.log($("#foo")[0].submit);
               $("#foo")[0].submit(); ///// SHOWING Error on this line///////      
           }
        });
    }
});
4

2 に答える 2

1

あなたは言う必要があります contentType:"Application/Json"

クリックメソッドの前。デフォルトのアクションを防ぎます。ajaxが終了したら、submitメソッドを呼び出します。

$("#submit").click(function(e) {
         e.preventDefault();
        var $form = $(this);
        // your rest code. 
    });

ajaxメソッドではこのようにしてみてください。

$.ajax({
url:url,
data:$("#foo").serialize(),
contentType:"Application/Json";
.... your success blocks. 
});  

送信方法に問題がある場合。次に、このようにしてみてください

$("form").submit(); ///// Error on this line will be fixed///////      
于 2013-03-08T09:38:42.273 に答える
0

以下のように関数から[0]を削除して確認してください

function validdata()
    {
        var url = "test.php"; 
        $.ajax({
           type: "POST",
           beforeSend: function(){},
           url: url,
           data: $("#foo").serialize(), // serializes the form's elements.
           success: function(data)
           {
               document.getElementById("statushidden").value=data;
               $("#foo").submit(); ///// Removed [0] from your given snippet ///////      
           }
        });
    }
于 2013-03-08T11:25:28.093 に答える