0

現時点では、json から msg[0].box msg[1].box などの形式で値を返すスクリプトを使用しています。ユーザーが 2 つの項目を入力しても問題ありません。しかし、ユーザーがそれ以上入力した場合はどうなるでしょうか。私の友人は、jquery の各関数を調べて複数の値を返すことを提案しましたが、私は jquery にかなり慣れていないので、誰かが私のコードを使用してこれを達成するのを手伝ってくれたらありがたいです。

また、値が返されたときに firebug に json タブがなく、reposnse と html だけである理由についても混乱しています。これは正常ですか?区切り文字として , を使用して値を入力することに注意してください。

phpコード

    $dept = mysql_real_escape_string($_POST['customerdept']);
    $company = mysql_real_escape_string($_POST['BA_customer']);
    $address = mysql_real_escape_string($_POST['customeraddress']);
    $service = mysql_real_escape_string($_POST['BA_service']);
    $box = mysql_real_escape_string($_POST['BA_box']);
    $date = DateTime::createFromFormat('d/m/Y', $_POST['BA_destdate']);
    $destdate = $date -> format('Y-m-d');
    $authorised = mysql_real_escape_string($_POST['BA_authorised']);
    $activity = 'New Intake';
    $submit = mysql_real_escape_string($_POST['submit']);
    $boxerrortext = 'You must enter a box for intake';

    $array = explode(',', $_POST['BA_box']);

        if (isset($_POST['submit']))   {
          foreach ($array as $box) {


          $form=array('dept'=>$dept,
                 'company'=>$company,
                 'address'=>$address,
                 'service'=>$service,
                 'box'=>$box,
                 'destroydate'=>$destdate,
                 'authorised'=>$authorised,
                 'submit'=>$submit);

          $result[]=$form;

   }  

          echo json_encode( $result );
   }

jqueryコード

submitHandler: function()   {
                if ($("#BA_boxform").valid() === true)  { 
                var data = $("#BA_boxform").serialize();
                $.post('/sample/admin/requests/boxes/boxesadd.php', data, function(msg) {
                $("#BA_addbox").html("You have entered box(es): " + "<b>" + msg[0].box + "  " + msg[1].box + "</b><br /> You may now close this window.");
                //console.log(msg[0].box);
                $("#BA_boxform").get(0).reset();
                }, 'json');

         } else

         { 
           return; 
         }
        },
        success:    function(msg)   {
                //$("#BA_addbox").html("You have entered a box");
                //$("#BA_boxform").get(0).reset();
        }
4

2 に答える 2

2

結果は、出力から JavaScript の配列として評価されます。リファレンスを見てみましょう: http://www.json.org/

デモの目的で、2 つ以上のボックスに対するメソッドの出力をダミーでテストしました。したがって、php スクリプトの結果は次のようになります。

 [{
    "dept": "dept",
    "company": "conmpany",
    "address": "address",
    "service": "service",
    "box": "box1",
    "destroydate": "destroydate",
    "authorised": "authorised",
    "submit": "submit"
}, {
    "dept": "dept",
    "company": "conmpany",
    "address": "address",
    "service": "service",
    "box": "box2",
    "destroydate": "destroydate",
    "authorised": "authorised",
    "submit": "submit"
}, {
    "dept": "dept",
    "company": "conmpany",
    "address": "address",
    "service": "service",
    "box": "box3",
    "destroydate": "destroydate",
    "authorised": "authorised",
    "submit": "submit"
}]

JavaScript 側では、これはオブジェクトの配列として処理されます。は標準配列であるforため、値を取得するにはループで十分なので、メソッドは次のようになります。

$.post('/sample/admin/requests/boxes/boxesadd.php', data, function(msg) {
                var messageOutput = '';
                for (var i = 0; i<msg.length; i++){
                    messageOutput += msg[i].box+'  ';     
                }
                $("#BA_addbox").html("You have entered box(es): " + "<b>" + messageOutput + "</b><br /> You may now close this window.");
                //console.log(msg[0].box);
                $("#BA_boxform").get(0).reset();
            }, 'json');

もちろん、$.each機能を使用することはできますが、シャベルだけが必要な場合にブルドーザーを使用することが常に解決策であるとは限りません。

バージョン 1.4a11 以降、firebug の json 出力は既に存在します: http://www.softwareishard.com/blog/firebug/json-explorer-for-firebug/

firebug の json タブ

于 2013-07-08T10:25:49.187 に答える