2013-02-24 127 views
0

我試圖提交一個表單使用jquery ajax沒有codeigniter只是爲了瞭解ajax如何工作。它工作得很好,但現在我想在codeigniter中執行它(因爲我正在CI中開發我的應用程序)。它不會在數據庫中插入值。我不知道如何檢查問題出在哪裏jquery ajax表單提交不與codeigniter工作,但工作否則

這是我的看法形式: -

<form name="article_form" method="POST" action=""> 
<input type="text" name="title" placeholder="Title for your article" /> 
<br> 
<textarea rows="12" name="body" placeholder="Tell your story"></textarea> 
<br> 
<input type="submit" name="submit_article" id="submit_article" value="Post" /> 
</form> 

這是我的jQuery AJAX腳本: -

<script language='JavaScript' type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script> 
    <script> 
     $('#submit_article').click(function(){ 

      var article_title = document.getElementById("title").value; 
      var article_body = document.getElementById("body").value; 

      $.ajax({ 
       url: '<?php echo base_url()."main/submit_article";?>', 
       type: 'POST', 
       dataType: 'json', 
       data: 'title='+article_title + '&body='+article_body, 
       success: function(output_string){ 
        $('#result_table').append(output_string); 
       } 
      }); 
     }); 
    </script> 

主要是控制器和這個函數submit_article: -

public function submit_article() 
{ 
     $article_title = $this->input->post('title'); 
     $article_body = $this->input->post('body'); 

    $this->load->model("model_articles"); 

    if($this->model_articles->article_submit($article_title, $article_body)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

這加載模型 - model_articles並傳遞兩個值即$ article_title和$ article_body函數article_submit()。這是在模型的功能有值插入到數據庫: -

public function article_submit($article_title, $article_body) 
    { 
     $article_data = array(
      'title' => $article_title, 
      'body' => $article_body 
      ); 

     $query_insert_article = $this->db->insert('articles', $article_data); 
     if($query_insert_article) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
+0

你肯定沒有記錄在您的數據庫被輸入?如果您在控制器中嘗試var_dump($ article_title,$ article_body);'會發生什麼? – hohner 2013-02-24 15:41:33

+0

我得到這個bool(false)bool(false) – 2013-02-24 15:44:31

+0

嗨,0,0被存儲在數據庫中。這意味着插入功能ios工作。我認爲這個價值並沒有從視野中達到控制者。有沒有辦法檢查這個? – 2013-02-24 17:06:41

回答

0

你需要你的JavaScript改成這樣:

$('#submit_article').click(function(e) { 

    var article_title = $('input[name="title"]').val(); 
    var article_body = $('textarea[name="body"]').val(); 

    $.ajax({ 
     url: '<?php echo base_url(); ?>main/submit_article', 
     type: 'POST', 
     dataType: 'json', 
     data: 'title=' + article_title + '&body=' + article_body, 
     success: function(output_string) { 
      $('#result_table').append(output_string); 
     } 
    }); 

    // Add this if you want to prevent the normal form from sending: 
    e.preventDefault(); 
}); 
+0

我加了這個,但沒有運氣,我也通過添加id =「title」和id =「body」來改變輸入標籤。它不起作用。當我用$ article_title和$ article_body的預先分配的值運行控制器時,它將該值存儲在數據庫中。但是,當我提交表單的值沒有任何反應。我想有一些與veiw和jquery ajax代碼相關的東西 – 2013-02-24 17:17:21

2

你需要改變你的控制器功能和Ajax到 試試這個

<script language='JavaScript' type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script> 
<script> 
    $('#submit_article').click(function(){ 

     var article_title = $('input[name="title"]').val(); 
     var article_body = $('textarea[name="body"]').val(); 


     $.ajax({ 
      url: '<?php echo base_url()."main/submit_article";?>/'+article_title+'/'+article_body , 
      type: 'POST', 
      dataType: 'json', 
      data: $('#form_id').serialize(),/*edit form_id*/ 
      success: function(output_string){ 
       $('#result_table').append(output_string); 
      } 
     }); 
    }); 
</script> 

而這一次是你的控制器

public function submit_article($article_title,$article_body) 
    { 


$this->load->model("model_articles"); 

if($this->model_articles->article_submit($article_title, $article_body)) 
{ 
    return true; 
} 
else 
{ 
    return false; 
} 

}

希望這將求解帶.....