0

CodeIgniter で動作するシナリオは次のとおりです: (質問の形式が適切でない場合は申し訳ありません。これが私の最初の投稿です。)

  1. 送信する大きなフォームがあり、検証後、ajaxで送信できます。
  2. 私のコントローラーでは、ユーザーがログインしている場合にビューでユーザー名を渡し、フォームの非表示の入力フィールドに配置します。ユーザーがログインしていない場合、結果は

<input type="hidden" id="loggedin" name="username" value="" />

3.私のjavascriptでは、フォームが有効かどうか、ユーザー名が!==""であるかどうかを確認し、 ajax でフォームを投稿しています。それ以外の場合は、ログインページでダイアログをポップしています。ユーザーがログインしている場合、フォームの送信は正常に機能しています。

問題は、ユーザーがログインダイアログにログインした後にフォームを投稿する方法がわからないことです。

ここにコードがあります:

    $('#MyForm').submit(function(event){
     event.preventDefault();


     var username=document.getElementById('loggedin').value;
     if($('#MyForm').valid() && username!=="" ){
     var serializeddata=$("#MyForm").serialize();



      $.ajax({
    type: "POST",
    url: "formsubmition", // The urls are in CI format
    contentType: "application/x-www-form-urlencoded;charset=UTF-8",

    data: serializeddata,
    dataType: "html",
    success: function(data) {
        $('#message_ajax_anaz').html(data);
                    }
                })




     }else if($('#MyForm').valid() && username==""){

      $("#loginpop").load("login").dialog();


     } 
     });

ログインページの ajax コード:

$('#login').submit(function(event){
     event.preventDefault();

     var dataser=$('#login').serialize();
      $.ajax({
    type: "POST",
    url: "login",
    contentType: "application/x-www-form-urlencoded;charset=UTF-8",

    data: dataser,
    dataType: "html",
    success: function(data) {
        $('#message_ajax').html(data);
                    }
                })

上記はダイアログで正常に機能しており、正常にログインできます。

$('#MyForm').submit(関数に戻るには、フォームに再度入力する必要はありません。

より多くの人に役立つことを願って、方法を見つけました。

submit 関数の外側でダイアログを初期化しました:

    $("#loginpop").load("login").dialog({
        autoOpen:false
    })

次に、elseステートメントを変更しました:

    else if($('#MyForm').valid() && username==""){

  $("#loginpop").dialog('open');

そして、私のログインajax成功関数に追加しました:

    $("#loggedin").val(data); // Changed the value of the hidden input with the username value on the fly. data contains the username

        $('#MyForm').submit();
        $('#loginpop').dialog('close');

これですべてが機能し、ログイン後にフォームが送信されます:)

4

1 に答える 1

0

https://stackoverflow.com/a/2276477/753676の方がはるかに簡単です。

http://api.jquery.com/serialize/

cookie.js で保存することもでき (送信後に Cookie を削除することもできます)、直接送信することができます。

于 2012-07-27T11:48:14.523 に答える