0

これは以前の投稿の続きです。私は AJAX に非常に慣れていないため、レンガの壁にぶつかり続けています。私は次のコードを持っています:

<script type='text/javascript'>
 $(document).ready(function(){
  $('#view1, #view2, #view3, #view4, #view5, #view6, #view7, #view8, #view9, #view10, #view11, #view12, #view13, #view14, #view15, #view16, #view17, #view18').on( 'change', 'select', function( ) {                            
        var statusVal = $(this).val();
          var job_id = $(this).prop('id');
          $.ajax({
                   type: "POST",
                   url: "saveStatus.php",
                   data: { statusType : statusVal, jobID: job_id },
                   cache : false,
                   success: function(data) {
                    $('#view1').load('jobs.php #view1', function() {});
                    $('#view2').load('jobs.php #view2', function() {});
                    $('#view3').load('jobs.php #view3', function() {});
                    $('#view4').load('jobs.php #view4', function() {});
                    $('#view5').load('jobs.php #view5', function() {});
                    $('#view6').load('jobs.php #view6', function() {});
                    $('#view7').load('jobs.php #view7', function() {});
                    $('#view8').load('jobs.php #view8', function() {});
                    $('#view9').load('jobs.php #view9', function() {});
                    $('#view10').load('jobs.php #view10', function() {});
                    $('#view11').load('jobs.php #view11', function() {});  
                    $('#view12').load('jobs.php #view12', function() {});   
                    $('#view13').load('jobs.php #view13', function() {});   
                    $('#view14').load('jobs.php #view14', function() {});   
                    $('#view15').load('jobs.php #view15', function() {});   
                    $('#view16').load('jobs.php #view16', function() {});   
                    $('#view17').load('jobs.php #view17', function() {});   
                    $('#view18').load('jobs.php #view18', function() {});   
                   }
        })
    });
  });
</script>  

これで、view1-18 の div にそれぞれ複数の select ステートメントがあるため、select ステートメントを含む 18 個の div があります。select からの値を DB に自動保存することで機能しますが、これはうまく機能しますが、これは不十分であると確信しています私の最初の質問は、コードを適切にフォーマットするためのヘルプです。

私の 2 番目の質問は、各 div に 2 つの選択を追加し、それぞれを別の DB フィールドに保存したい場合です。以下は私の選択コードです:

    <select name="status" id="<?php echo str_pad($job->job_id, 6, "0", STR_PAD_LEFT); ?>">
      <option value=''>--Select--</option>
      <option value='Job Approved' <?php if($job->job_schedulestatus == 'Job Approved') echo 'selected'; ?> >Jobs Approved to Print Internally</option>
      <option value='To Artwork' <?php if($job->job_schedulestatus == 'To Artwork') echo 'selected'; ?> >To Artwork</option>   
    </select>  

別のものを追加して「status2」と呼び、重複したAJAX呼び出しを作成し、 status を status2 に変更することを考えましたが、これは機能せず、どこに行くべきかわかりません。新しいフィールドに挿入するコードを持つ saveStatus2.php も作成しました。

ガイダンス/ヘルプをいただければ幸いです

イアン

4

2 に答える 2

2

これは私には少し疑わしいように思えます-主に私が見ているのは「ajaxの開始」が起こっているからです。$.load() も ajax 関数であるため、メインの ajax イベントへのコールバックとして複数の .load イベントを呼び出していることに注意してください。

最初のラッパー ajax のように、それを単一の Ajax 呼び出しに統合し、PHP にすべての選択を設定させる方法はありますか?

各選択を反復する必要がある場合は、次の方法で少しきれいにすることができます。

for(var i=1; i<19; i++)
{
  $('#view'+i).load('jobs.php#view'+i); //empty callback not needed here as well..
}
于 2013-09-23T15:54:43.920 に答える
0

私はこのようなことをします...

// cache the views
var views = $('.view');

$('#view_wrapper').on('change', 'select', function() {
    var statusVal = $(this).val();
    var job_id = $(this).prop('id');
    $.ajax({
        type: "POST",
        url: "saveStatus.php",
        data: { statusType : statusVal, jobID: job_id },
        cache : false,
        success: function(data) {
            $(views).eatch(function() {
                var view_id = $(this).prop('id');
                $('#'+view_id).load('jobs.php#'+view_id);
            });
        }
    });
});
于 2013-09-23T16:17:12.103 に答える