Данные формы не передаются в базу данных при нажатии кнопки Сохранить

#php #jquery #ajax #codeigniter

Вопрос:

В настоящее время у меня есть страница редактирования, на которой любые внесенные мной изменения отражаются в моей базе данных. Но одна часть моей формы не отправляет данные, а именно вкладка примечания, где, если заметок нет, пользователь может добавить новую заметку в базу данных или, если заметка уже существует, они должны иметь возможность ее редактировать. В настоящее время это мой код:

Просмотр Класса:

 lt;div id="notes-wrap"gt; lt;table id="tableobj1"gt;  lt;theadgt;  lt;tr class="active"gt;  lt;thgt;Datelt;/thgt;  lt;thgt;Noteslt;/thgt;  lt;th nowrapgt;Added Bylt;/thgt;  lt;th colspan="2" nowrapgt;Actionlt;/thgt;  lt;/trgt;  lt;/theadgt;  lt;tbodygt;  lt;tr id="objrows1" class="tblerow1"gt;  lt;td colspan="3"gt;lt;textarea name="note" class="form-control notes" placeholder="Notes"gt;lt;/textareagt;lt;/tdgt;  lt;td colspan="2" width="1%"gt;lt;button type="submit" class="btn-sm savenotes" data-href="lt;?php echo site_url('contacts/savenotes/'.$leadid); ?gt;" gt;  lt;i class="fa fa-save"gt;lt;/igt;lt;/buttongt;lt;/tdgt;  lt;/trgt;  lt;?php if($notes) foreach($notes as $val):?gt;  lt;trgt;  lt;td nowrap="nowrap"gt;lt;?php echo($val['added_date']);?gt;lt;/tdgt;  lt;td width="75%" class="textnote"gt;lt;?php echo nl2br($val['note']) ?gt;lt;/tdgt;  lt;td width="15%"gt;lt;smallgt;lt;?php echo $val['display_name'] ?gt;lt;/smallgt;lt;/tdgt;  lt;td width="1%" align="center"gt;lt;agt;lt;i class="fa fa-pencil"gt;lt;/igt;lt;/agt;lt;a data-url="lt;?php echo site_url('contacts/updatenote/'.$val['notes_id']) ?gt;" style="display:none"gt;lt;i class="fa fa-save"gt;lt;/igt;lt;/agt;lt;/tdgt;  lt;td width="1%" valign="middle" align="center"gt;lt;a data-url="lt;?php echo site_url('contacts/deletenote/'.$val['notes_id']) ?gt;" gt;lt;i class="fa fa-trash"gt;lt;/igt;lt;/agt;lt;/tdgt;  lt;/trgt;  lt;?php endforeach; ?gt;  lt;/tbodygt;  lt;/tablegt;  lt;button type="submit" class="btn btn-success waves-light"gt;Submitlt;/buttongt;  

JS

 $(document).ready(function(){  $("#notes-wrap").on("click", "button.savenotes", function(e){   e.preventDefault();  saveleadnotes($(this));   });   $("#tableobj1").on("click", "tbody a.remove", function(e) {  var $t=$(this).closest ('tr');$u = $(this).data('url');   swal({  title: "Are you sure?",  text: "You will not be able to recover this!",  type: "warning",  showCancelButton: true,  confirmButtonClass: 'btn-warning',  confirmButtonText: "Yes",  closeOnConfirm: true  }, function (e) {   if($u amp;amp; e){  removeobj($u);   $t.remove();  }   else if(e){   $t.remove();   }   });   });    function saveleadnotes(obj){   $.ajax({  url: obj.data('href'),  async:false,  type:"post",  data:obj.closest('.tblerow1').find(':input').serialize(),  success: function(result){   if(resultlt;1)   {  obj.closest('.tblerow1').find('[name="note"]').focus();   }  else {  leadnotesdocs('lt;?php echo site_url('contacts/notes/'.$contact-gt;id); ?gt;','#notes-wrap');   }  }  });   }  

Controller Class:

 function edit($id,$return=0)  {  if ($this-gt;form_validation-gt;run() == FALSE)  {  $edit['notes']= $this-gt;contacts_model-gt;load_notes($id);   $edit['leadid']= $id;   } else {  $maindata=array('agents_id'=gt;$this-gt;input-gt;post('agents_id'));  $updated=$this-gt;contacts_model-gt;update($maindata,$id);   if($updated){  if($this-gt;input-gt;post('notes')){   foreach($this-gt;input-gt;post('notes') as $key =gt; $note):   if($note !='') {  $smdata = array('contacts_id'=gt;$id,'note'=gt;$note,'added_by'=gt;$this-gt;session-gt;userdata('clientsessuserid'));   $this-gt;contacts_model-gt;save_notes($smdata); }  endforeach;  }  }   public function updatenote($id){  if($this-gt;form_validation-gt;run() == TRUE)  {  $maindata = array('note'=gt;$this-gt;security-gt;xss_clean($this-gt;input-gt;post('leadnote')));   $insid= $this-gt;contacts_model-gt;update_notes($maindata,array('notes_id'=gt;$id));   $c= $this-gt;contacts_model-gt;load($id,"refno");  $this-gt;contacts_model-gt;saveactivity(array('object_ref'=gt;$c-gt;refno,'object_id'=gt;$insid,'activity'=gt;'Note Updated','action'=gt;'Updated'));   echo $insid;exit;   }   }   public function savenotes($id){  if($this-gt;form_validation-gt;run() == TRUE)  {  $maindata = array('contacts_id'=gt;$id,'note'=gt;$this-gt;input-gt;post('note'),'added_by'=gt;$this-gt;session-gt;userdata('clientsessuserid'));   $insid= $this-gt;contacts_model-gt;save_notes($maindata);   $contacts= $this-gt;contacts_model-gt;load($id,"refno");  $this-gt;contacts_model-gt;saveactivity(array('object_ref'=gt;$contacts-gt;refno,'object_id'=gt;$insid,'activity'=gt;'Note Added','action'=gt;'Added'));   echo $insid;exit;   }  }  

Класс Модели:

 function save_notes($maindata){  $this-gt;db-gt;insert("crm_contacts_notes",$maindata);   return $this-gt;db-gt;insert_id();  } function load($id) {  $id=$this-gt;db-gt;escape_str($id);  $cond=array('id'=gt;$id);  $this-gt;db-gt;where($cond);  $this-gt;db-gt;from("crm_contacts");  $query = $this-gt;db-gt;get();  return $query-gt;row(); }  function update_notes($maindata,$cond){  return $this-gt;db-gt;update("crm_contacts_notes",$maindata,$cond);  }   

Но это просто обновляет страницу всякий раз, когда я нажимаю кнопку «Сохранить», и в мою базу данных ничего не отправляется. Я даже не вижу, делаются ли какие-либо запросы, так как всякий раз, когда я нажимаю кнопку сохранить, страница обновляется.

Комментарии:

1. У вас синтаксическая ошибка в e.preventDefault(),saveleadnotes($(this)); . Вы должны разделить два выражения с помощью a ; , а не a , . И если вы не хотите, чтобы эта кнопка отправляла форму, измените lt;button type="submit" lt;button type="button" ее, и вам это не понадобится e.preventDefault() . И в качестве общего предложения вам следует разумно отформатировать свой код. Соблюдайте отступы в коде и придерживайтесь одного выражения в строке. Это значительно облегчит чтение и отладку вашего кода (и поиск опечаток, подобных той, на которую я указал).

2. Внутри этого $("#notes-wrap").on("click", "button.savenotes", function(e){...} . Вы уверены, что это событие спровоцировало. Кажется, что когда вы нажимаете «Сохранить», то все начинается с этого. Попробуйте e.preventDefault(); , а затем console.log(e); или сделайте какое-нибудь предупреждение, чтобы убедиться, что это событие работает. Однако я нигде не вижу никаких notes-wrap удостоверений личности.

3. @MagnusEriksson поэтому я изменил свой , на ; и заменил кнопку отправить как, но теперь, когда я нажимаю на кнопку, ничего не происходит, в моей консоли также нет вызова AJAX.

4. @vee поэтому я попытался добавить код предупреждения ниже e.preventDefault(); , и он не вернул никаких выходных данных, когда я нажал на него.

5. @H2O Это означает, что ваш прослушиватель событий $("#notes-wrap").on("click", ...) не работает. Как я уже говорил… Я нигде не вижу HTML id="notes-wrap" (до вашего последнего редактирования). Это событие начните слушать с этого id . С момента вашего последнего редактирования это id уже существует. Попробуйте еще раз выполнить отладку, если этот прослушиватель событий работает.