2014-09-05 77 views
0

我需要一些幫助,下面的代碼。我正在嘗試使用ajax調用更新數據庫中的多行。我沒有收到任何錯誤消息,也沒有出現在我的瀏覽器日誌中。我可以看到點擊函數正在執行,但數據庫查詢沒有被執行。有人能指引我朝着正確的方向嗎?使用ajax更新PHP中的多個記錄

感謝您提供任何幫助。

更新 - 下面的代碼已更新爲可行。我已經註釋掉了原始的非工作代碼。

我的輸入字段:

<input type="hidden" id="Opportunity_Id" name="Opportunity_Id" value="<?php echo $opportunity->Opportunity_Id; ?>"/> 
<input type="hidden" id="Class_Numbers[]" name="Class_Numbers" value="<?php echo $Class_Number; ?>"/> 
<input type="text" id="Class_Dates[]" name="Class_Dates" value="<?php echo $Class_Date; ?>"/> 
<input type="text" id="Start_Times[]" name="Start_Times" class="col-xs-12 col-sm-11" value="<?php echo $Preferred_Start_Time; ?>"/> 
<input type="text" id="End_Times[]" name="End_Times" class="col-xs-12 col-sm-11" value="<?php echo $Preferred_End_Time; ?>"/> 

我jQuery函數:

/*$("#test").click(function() { 
    $("#validation-form").ajaxForm({url: 'schedule/schedule_opportunity', type: 'post'}); 
    var form_data = { 
     Opportunity_Id: $('#Opportunity_Id').val(), 
     Class_Number: $('#Class_Numbers').val(), 
     Class_Date: $('#Class_Dates').val(), 
     Start_Time: $('#Start_Times').val(), 
     End_Time: $('#End_Times').val(), 
     ajax: '1' 
    }; 

    $.ajax({ 
     url: "<?php echo site_url('schedule/schedule_opportunity'); ?>", 
     type: 'POST', 
     data: form_data, 
     dataType: 'json', 
     cache: false 
    }); 

    return false; 
})*/ 

$('#validation-form').submit(function(e){ 
    e.preventDefault(); 
    var form = $(this); 

    $.ajax({ 
     url: "<?php echo site_url('schedule/update_classes'); ?>", 
     method: form.prop('method'), 
     data: $('#validation-form').serialize(), 
     success: function(){ 
      alert('Success'); 
     } 
    }); 

}) 

我的控制器:

function update_classes() { 
    $Opportunity_Id = $this->input->post('Opportunity_Id'); 
    $Class_Numbers = $this->input->post('Class_Numbers'); 
    $Class_Dates = $this->input->post('Class_Dates'); 
    $Start_Times = $this->input->post('Start_Times'); 
    $End_Times = $this->input->post('End_Times'); 
    $this->ion_auth_model->update_classes($Opportunity_Id, $Class_Numbers, $Class_Dates, $Start_Times, $End_Times); 
} 

我的模型:

function update_classes($Opportunity_Id, $Class_Numbers, $Class_Dates, $Start_Times, $End_Times) { 
    foreach($Class_Numbers as $key => $Class_Number) { 
     //$Opportunity_Id = $Opportunity_Id[$key]; 
     $Class_Date = $Class_Dates[$key]; 
     $Start_Time = $Start_Times[$key]; 
     $End_Time = $End_Times[$key]; 

     $Class = array(
      'Class_Date' => $Class_Date, 
      'Start_Time' => $Start_Time, 
      'End_Time' => $End_Time 
     ); 

     $this->db->where('Opportunity_Id', $Opportunity_Id); 
     $this->db->where('Class_Number', $Class_Number); 
     $this->db->update('Classes', $Class); 
    } 
} 

回答

1

嗯,我認爲你該做一些調試了。什麼是很不清楚我是你打算如何讓多個值從前端的所有字段,但儘管如此,這些都是在你的代碼,我在這一點上所看到的問題:

  1. Opportunity_Id: $('#Opportunity_Id').val() = >我看不到ID爲「Opportunity_Id」的字段。 (通過問題編輯修正)
  2. Class_Number: $('#Class_Numbers').val()等=>沒有ID爲「Class_Numbers」的字段。有一個「Class_Numbers []」,但不會在您的查找中返回。所有其他領域也一樣。
  3. 您似乎認爲JQuery會自動從您的文本框值創建某種數組,並將它們傳遞給服務器。這不會發生。
+0

我在我上面的帖子中錯誤地留下了Opportunity_Id。我已經更新。嗯,我明白。我做了一些非常相似的事情,只是使用過去的常規表單提交,並認爲我可以使用jQuery來做同樣的事情。謝謝 – 2014-09-05 02:17:23

+0

對於常規表單提交,這確實可行。儘管你可以使用JQuery來通過AJAX提交常規表單。它不一定是JSON。 – 2014-09-05 02:19:12

+0

我明白了。我已經使用我正在使用的新功能更新了我的文章。仍然得到相同的結果。我收到了一個成功警報,沒有任何錯誤。 – 2014-09-05 02:42:29