1

私はこの質問が以前に尋ねられたことを知っていますが、どの解決策も私にはうまくいかないようです。

jqueryuiダイアログボックス内にフォームがあります。

<!-- Dialog: Register new user-->
<div id="dialogForUser" title="Register new user">
    <form id="target" action="" method="post" style="HEIGHT: 100%">
  <div class="form_settings">
    <h3>Enter user details:</h3>

    <p><span>name</span>
      <input width=150px id ="edName" name="edName" value="<?php echo htmlentities($name); ?>" />
    </p>
    <p><span>surname</span>
      <input width=150px id ="edSurname" name="edSurname" value="<?php echo htmlentities($surname); ?>" />
    </p>
    <p><span>username</span>
      <input width=150px id ="edUsername" name="edUsername" value="<?php echo htmlentities($username); ?>" />
    </p>
    <p><span>password</span>
      <input width=150px id ="edPassword" name="edPassword" value="<?php echo htmlentities($password); ?>" />
    </p>
    <p><span>confirm password</span>
      <input width=150px name="edConfirmPassword" />
    </p>
    <p><span>security question 1</span>
      <input width=150px name="edSecurityQuestion1" />
    </p>
    <p><span>answer</span>
      <input width=150px name="edSecurityAnswer1" />
    </p>
    <p><span>security question 2</span>
      <input width=150px name="edSecurityQuestion21" />
    </p>
    <p><span>answer</span>
      <input width=150px name="edSecurityAnswer2" />
    </p>
    <p><span>security question 3</span>
      <input width=150px name="edSecurityQuestion3" />
    </p>
    <p><span>answer</span>
      <input width=150px name="edSecurityAnswer3" />
    </p>
    <p><span>company name</span>
      <input width=150px name="edCompanyName" value="<?php echo htmlentities($companyName); ?>" />
    </p>
    <p><span>address line 1</span>
      <input width=150px name="edAddress1" value="<?php echo htmlentities($address1); ?>" />
    </p>
    <p><span>address line 2</span>
      <input width=150px name="edAddress2" value="<?php echo htmlentities($address2); ?>" />
    </p>
    <p><span>address line 3</span>
      <input width=150px name="edAddress3" value="<?php echo htmlentities($address3); ?>" />
    </p>
    <p><span>city</span>
      <input width=150px name="edCity" value="<?php echo htmlentities($city); ?>" />
    </p>
    <p><span>county</span>
      <input width=150px name="edArea" value="<?php echo htmlentities($area); ?>" />
    </p>
    <p><span>post code</span>
      <input width=150px name="edPostalCode" value="<?php echo htmlentities($postalCode); ?>" />
    </p>
    <p><span>country</span>
      <input width=150px name="edCountry" value="<?php echo htmlentities($country); ?>" />
    </p>
    <p><span>telephone</span>
      <input width=150px name="edTelephone" value="<?php echo htmlentities($telephone); ?>" />
    </p>
    <p><span>fax</span>
      <input width=150px name="edFax" value="<?php echo htmlentities($fax); ?>" />
    </p>
    <p><span>e-mail</span>
      <input width=150px name="edEmail" value="<?php echo htmlentities($email); ?>" />
    </p>
    <p><span>website</span>
      <input width=150px name="edWebsite" value="<?php echo htmlentities($website); ?>" />
    </p>
  </div>
</form>

編集がほとんどないシンプルなフォーム。次に、ユーザーが「登録ボタン」を押したときに処理するためにphpファイル(Users_cntr.php)を呼び出すjqueryコードがあります。

$( "#dialogForUser" ).dialog({
            autoOpen: false,
            show: "blind",
            hide: "explode",
            buttons:[
                                {text: "Register", click: function() { 
                                    $.ajax({url:Users_cntr.php ,success:function(result){$("button").html(result);}});
                                                                                                            }
                                },
                                {text: "Cancel", click: function() { $(this).dialog("close"); }},
                            ]
    });


    $( "#openerForUser" ).click(function() {
        var dialogWidth = $(this).attr('dialogWidth');
        var dialogHeight = $(this).attr('dialogHeight');

        $( "#dialogForUser" ).dialog( "option", "width", dialogWidth );
        $( "#dialogForUser" ).dialog( "option", "height", dialogHeight );
        $( "#dialogForUser" ).dialog( "open" );
        return false;
    });

ご覧のとおり、phpファイルはajax呼び出しを使用して呼び出されます(私はそれがどのように機能するかを理解していなかったことを認めなければなりません!)。

phpが行うのは、新しいユーザーを作成してデータベースに挿入することだけです。私の問題は、UIダイアログの値をphpファイルに渡す方法がわからないことです。投稿する必要があると思います。過去に提案されたコードのいくつかを使用してみましたが、結果が得られませんでした。

プロジェクトで同様のことをしようとしましたか?手伝ってくれますか?

どうもありがとうございます、

ディノ

4

3 に答える 3

1

ボタン ハンドラーで送信するデータを送信する必要があります。

$.post('Users_cntr.php', $('#target').serialize(), function(result){
    $("button").html(result);
});          

これは単にサーバー上の php ファイルを呼び出すだけですが、2 番目の「オプション」パラメーターは送信するデータです。この場合、フォームを で取得し、シリアル化id targetする必要があることを jQuery に伝えました。

同じことのショートカットであり、プロパティとプロパティをラップするため、$.ajaxメソッドをに変更しました。ここで詳細を読むことができます: jQuery の投稿$.postdata-typetype

于 2012-09-30T15:51:26.520 に答える
1

データを渡したい場合は、serialize()ajaxを使用できます。

$.ajax({
    url:'Users_cntr.php',
    type:'post',  
    data: $("#target").serialize(),
    success:function(result){
        $("button").html(result);
    }
});

次に、次のようにデータを取得php$_POSTます

$edName=$_POST['edName'];
$edSurname=$_POST['edSurname'];
于 2012-09-30T15:51:54.447 に答える
0

申し訳ありませんが、私は自分の質問にメモを追加しています。

まず、ご協力いただきました皆様、本当にありがとうございました。

私のコードには別のバグがありました: 送信は 1 回しかありません。これは、以下を変更する必要があるためです。

$(this).dialog("close");

これとともに:

$(this).dialog("destroy").remove();

ディノ

于 2012-09-30T20:35:50.307 に答える