1

おそらく非常に単純な答えですが、私が苦労しているものです。標準の送信ボタンがある基本的なフォームがあります。これをクリックすると、jquery serialize によって評価され、次に PHP ページなどを処理するために Ajax によって評価されます。ユーザーがクリックしたときに送信ボタン「送信」の名前が投稿されない理由について混乱しています。私が考えることができる唯一の理由は、シリアル化がテキスト、テキスト領域、および選択要素のみを処理することです。もしそうなら、処理のために名前をphpに送信するにはどうすればよいですか。サンプルコードをいくつか含めました。誰かが私を正しい方向に向けることができれば幸いです。ありがとう

htmlフォーム

<!--- Form to add box -->

<div id="boxaddform" style="display:none;">
    <div class="dialogTop_padd"></div>
        <form id="BA_boxform" name="BA_boxform" method="post">  

        <fieldset>
        <legend><span></span>Select Company</legend>
            <div class="spacer"></div>
        <div class="formMessage">Click again to open</div>
        <div class="fld_fld">

        <div>
        <label for="BA_customer">Company:</label><br />
        <select name="BA_customer" id="BA_customer">
        <option SELECTED VALUE="">Select a Company</option>
        <?php
        do {  
        ?>
        <option value="<?php echo $row_Recordsetcust['customer']?>"><?php echo $row_Recordsetcust['customer']?></option>
        <?php

        } 
        while ($row_Recordsetcust = mysql_fetch_assoc($Recordsetcust));
        $rows = mysql_num_rows($Recordsetcust);

        if($rows > 0)

        {
        mysql_data_seek($Recordsetcust, 0);
        $row_Recordsetcust = mysql_fetch_assoc($Recordsetcust);
        }

        ?>
        </select>

        <div class="spacer"></div>
        <!--- displays the address and dept from the change function -->
        <div id="BA_dept"></div>
        <br />
        <div id="BA_address"></div>

            </div>
        </fieldset>
        <div class="dialogTop_padd"></div>
        <!--- fieldset for service level -->
        <fieldset>
        <legend>Service Level</legend>
        <div class="spacer"></div>
        <div>
        <label for="BA_service">Service level:</label>
        <select name="BA_service" id="BA_service">
        <option SELECTED VALUE="">Select an option</option>
        <option value="Standard">Standard</option>
        <option value="Rapid">Rapid</option>
        </select><br />
        </div>
        </fieldset>
        <div class="dialogTop_padd"></div>

        <!--- fieldset for box # -->
        <fieldset>
        <legend>Box Details</legend>
        <div class="spacer"></div>
        <div>
        <label for="BA_box">Box#:</label><br />
        <input id="BA_box" name="BA_box" type="text" size="32" maxlength="128"  /><br />
        </div>

        <div>
        <label for="BA_destdate">Destroy date:</label>
        <input id="BA_destdate" name="BA_destdate" type="text" size="32" maxlength="128" value = "" /><br />
        </div>
        </fieldset>
        <div class="dialogTop_padd"></div>
        <!--- fieldset for authorisation -->
        <fieldset>
        <legend>Authorisation</legend>
        <div class="spacer"></div>
        <div>
        <label for="BA_authorised">Requested By:</label>
        <input id="BA_authorised" name="BA_authorised" type="text" value="<?php echo $_SESSION['kt_name_usr']; ?>"><br />
        </div>
        </fieldset>

        <!--- div to show callback result from ajax via dialog -->
            <br />      
            <div id="BA_addbox"></div>
            <br />
             <input class="AddBoxSubmitButton" type="submit"  id="submit" name="submit" value="Add Box" />
             <input class="AddBoxResetButton" type="reset"  name="cancel" value="Clear Form" />
        <!--- buttons to submit form and reset form to default status -->
        <!-- <button id="BA_submit" class="submitbutton icon-right ui-state-default2 ui-corner-all"><span class="ui-icon ui-icon-circle-plus"></span>Add Box</button>
        <button type="reset" id="BA_reset" class="resetbutton icon-right ui-state-default2 ui-corner-all"><span class="ui-icon ui-icon-circle-plus"></span>Reset</button>
        --><br />

        </form>
           <br />
    </div>

jqueryコード

$(function(){         
        $("#BA_boxform").submit(function(){

         var formdata = $('#BA_boxform').serialize();
         alert(formdata);
         $.ajax({
           type: "POST",
           url: "/domain/admin/requests/boxes/boxesadd.php",
           data: formdata,
           dataType: 'json',
           success: function(msg){
               //$("#confirm_department").hide();

               /*
               var $dialog = $('<div id="dialog"></div>')
               .html('Your intake was successfully submitted and will be viewable in the reporting area.<br /><br />Thank you.');
               $dialog.dialog({
               autoOpen: true,
               modal: true,
               title: 'Box intake submission successfull',
               width: 400,
               height: 200,
               draggable: false,
               resizable: false,
               buttons: {
               Close: function() {
               $( this ).dialog( "close" );
               }
               }
               });
               */
               //alert('You have succesfully submitted your ' + msg.company + ' report. Thank you.');
               //console.log(msg);
               $("#BA_addbox").show();

               //$("#formImage .col_1 li").show();
               $("#BA_boxform").get(0).reset();
               //$("#boxaddform").hide();
          }
       });
         return false;
     });
});

// End function to submit box intake form

説明のための PHP コードの削減

if (isset($_POST['submit']))    { }
4

2 に答える 2

3

jQuery送信ボタンをシリアル化しません:

ドキュメント:

注: 「成功したコントロール」のみが文字列にシリアル化されます。フォームはボタンを使用して送信されていないため、送信ボタンの値はシリアル化されません。

$_POST回避策は、空でないかどうかを確認することです。

if (!empty($_POST)) {
    // Your code here
}

または、特定の入力が設定されているかどうかを確認してください。例えば

 if (isset($_POST['BA_customer'])) {

 }
于 2013-06-26T09:39:27.237 に答える
1

前述のように、送信ボタンはシリアル化されていません。可能な回避策: {テストされていませんが、私が理解しているように、動作するはずです}

$('#BA_boxform input:submit').on('click', function () {
    var formdata = $('#BA_boxform').serialize() + '&submit=' + $(this).val();
    //....
    return false;
});
于 2013-06-26T09:52:40.403 に答える