2013-09-23 3 views
0

Это продолжение предыдущего сообщения, я супер новичок в AJAX и как таковой продолжаю ударять по кирпичной стене. Anways У меня есть следующий код:AJAX Call from multiple selects

<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> 

Теперь у меня есть несколько операторов выбора каждый в DIV с является view1-18, поэтому 18 дивов каждый с отборным заявлением, оно работает по авто сохранения значения от выбора к моей БД, это отлично работает, но Я уверен, что это плохо написанный код, поэтому мой первый вопрос - помочь ему отформатировать его правильно.

Мой второй вопрос: если теперь я хотел добавить два выбора в каждом div и каждый из них будет сохранен в другом поле БД. Ниже мой выбор код:

<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> 

Я думал о том, просто добавив еще один и назвав его «СОСТОЯНИЕ 2» и создать дубликат AJAX вызова и переименование ничего, где он говорит статус в Status2, это, однако, не работает, и у меня есть не знаю, куда идти. Я также создал saveStatus2.php, который будет иметь код для вставки в новое поле.

Любое руководство/Помощь будет весьма признателен

Ian

+0

Вам нужен обновлять очень просмотр при каждом изменении выбора? Или вам нужно просто обновить текущий вид при изменении выбора? – Vlad

+0

Да Мне нужно обновить каждую информацию, содержащую информацию, основанную на том, какое значение сохраняется, и путем изменения можно было бы изменить, что будут отображаться 2 вида. – snookian

+0

Можете ли вы добавить классы к своим представлениям? – Vlad

ответ

2

Это кажется немного подозреваемого мне - главным образом потому, что я вижу, это «Аякса момента создания» вещь происходит. Помните, что $ .load() также является функцией ajax, поэтому вы вызываете несколько событий .load как обратный вызов основного события ajax.

Есть ли способ объединить это в один вызов Ajax, как и в первом пакете ajax, который у вас есть, а затем разрешить PHP устанавливать все выбранные вами для вас?

Если вам нужно перебирать каждый выбор, я могу идти по этому пути, чтобы сделать его немного очистителя:

for(var i=1; i<19; i++) 
{ 
    $('#view'+i).load('jobs.php#view'+i); //empty callback not needed here as well.. 
} 
+0

Это потрясающее спасибо, любые идеи о том, как я могу теперь заставить его работать с два выбора? – snookian

+1

Назначьте класс вашему выбору, например class = "select1", то же самое для 2. Укажите номер выбора в id, например id = "view1" и т. Д., Затем настройте прослушиватель изменений для выбора. Использование селектора классов в jquery свяжет это со всеми выборами с этим классом. например, $ ('. select1'). on ('click', function() {id = $ (this) .prop ('id') ....}), а затем сделать вызов .load внутри этого же обратного вызова ... –

+0

Извините, это должно быть .on ('change', ... not 'click'. –

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); 
      }); 
     } 
    }); 
});