0

私のWebアプリケーション(Zend Frameworkを使用)では、データベースに新しいエンティティを追加するときに、このエンティティが以前に追加および削除されているかどうかを確認する必要があります。(データベースからエンティティを削除すると、その特定のレコードの「ステータス」列が0(ゼロ)に更新されます。)

エンティティが以前に削除した場合、システムは以前に削除されたレコードを編集するか、新しいレコードを追加するための確認を求めます。ユーザーが以前に追加されたレコードを編集する必要がある場合、ユーザーは編集ページにリダイレクトされる必要があります。

このチェックとリダイレクトは、jQueryを使用して行われます。これが私が使用しているjQueryコードです:

 $("input[name=btnSubmit]").click(function(){       

    var name = $("input[name=txtTblPrefix]").val();
        var parameters = 'name='+name;

        $.ajax({
            url: '../admin_mapping/get-id',
            async:false,
            data:parameters,
            type:'POST',
            dataType: 'text',
            success: function(data)
            {       
                var res = confirm("There is a record already added to the database for "+name+". Do you want to edit it?");

                if(res)
                {
                    window.location.replace("../admin_mapping/edit?id="+data);
                }
            }

        });

    });

このコードでは、リダイレクト以外はすべて完全に機能します。window.location.replace("../admin_mapping/edit?id="+data);私はラインを別々にテストしました、そしてそれはうまく働きます。confirm()関数でさえ。を返しますtrue

alert()条件の中に入れてみましたがif、アラートが表示されます。しかし、リダイレクトは機能していません。

誰かがこれを手伝ってくれませんか?

前もって感謝します

4

2 に答える 2

1

最初に、変数データに期待どおりの内容が含まれていることを確認してください。おそらく、呼び出しが失敗するヘッダーが含まれている可能性があります (ただし、コンソールでこれを見つける必要があります)。

正しい文字列を alert() できる場合は、別の方法を試してください。場所にはいくつかのセキュリティ制限があります (つまり、iframe はコンテナーの場所を変更できません)。名前のない関数呼び出しでは操作できない場合がありますが、タイムアウトから操作できる場合があります (私にとってはうまくいきました!)。

document.location.href='./yoururl?'+data 

書きます

setTimeout("document.location.href='yoururl?"+data +"';",10);

これにより、より広い範囲で実行され、成功するはずです。

于 2013-01-17T08:28:47.043 に答える
0

私がする必要があるのは、関数のreturn false中に a を入れることだけです。submitそれ以外の場合、ボタンは送信ボタンであるため、フォームが送信されます。

于 2013-01-17T11:35:37.103 に答える