2013-03-10 79 views
1

问题是,当我使用提交时,codeigniter干净地处理脚本。但是当我通过ajax传递数据时。脚本工作正常。它甚至在我使用print_r时输出数组。它只是它不更新数据库。一切都很好,直到activerecord脚本。 这是我的控制器脚本。 (我只是简化了它)。 我所做的是有一个脚本会创建一个空行。因此,它将检索将用于保存文章的文章ID。 这是保存文章功能。活动记录codeigniter不通过Ajax传递时更新数据库

控制器:

function saveArticle(){ 
$this->userarticle_model->trial(); 
}  

型号:

function trial(){ 
     $userid = $this->session->userdata('userid'); 
     $articleId = $this->input->post('article_id'); 
     $articleData = array(
    'sfc_articleAuthor' =>$userid , 
    'sfc_articleTitle' => $this->input->post('article_title'), 
    'sfc_articleContent' => $this->input->post('article_content'), 
    'sfc_articleStatus' => 'saved', 
    'sfc_articleTag' =>$this->input->post('article_tag'), 
    'sfc_articleCategory' => $this->input->post('article_category') 
    ); 
    $this->db->where('sfc_articleId', $articleId); 
    $this->db->update('sfc_articles', $articleData); 
    } 

AJAX: (对不起,我只是复制这个从tutoral)

$(document).ready(function(){ 
    $('.save').click(function() { 

     $('#article_form').hide(0); 
     $('#message').hide(0); 
     var article_title = $('#article_title').val(); 
     var article_tag = $('#article_tag').val(); 
     var article_id = $('#articleId').val(); 
     var article_category = $('#article_category').val(); 
     var article_content = $('#article_form').find('.nicEdit-main').text(); 
     var article_status = 'saved'; 
     var dataString = 'article_title='+ article_title + '&article_tag=' + article_tag + '&article_category=' + article_category + '&article_content=' + article_content + '&article_status=' + article_status; 
     $.ajax({ 
      type : 'POST', 
      url : 'http://localhost/ci_usage/index.php/article/saveArticle', 
      dataType : 'json', 
      data: dataString, 
      success : function(data){ 
       $('#waiting').hide(500); 
       if (data.error === false) 
        $('#article_form').show(10); 
      }, 
      error : function(XMLHttpRequest, textStatus, errorThrown) { 
       $('#article_form').hide(10); 
       $('#article_form').show(3); 
      } 
     }); 
     return false; 
    }); 
}); 

查看:

<?php echo form_open('article/processArticle',array('id'=>'article_form'));?> 

<?php echo validation_errors(); ?> 
<div id="sidebar_options"> 
    <div class="sidebar_title">Article Settings</div> 
    <ul> 
     <li> 
     <label>Tags</label><br /> 
     <input type="text" name="article_tag" size="15" value="<?php echo set_value('article_tag');?>" id="article_tag"/> 
     </li> 
     <li> 
     <label>Category</label><br /> 
     <select name="article_category" id="article_category"> 
      <option value="1">Test Category 1</option> 
      <option value="">Test Category 2</option> 
      <option value="">Test Category 3</option> 
      <option value="">Test Category 4</option> 
     </select> 
     </li> 
     <a href="#"><li>PDF version</li></a> 
    </ul> 
</div> 
<div id="option_panel"> 
<input type="text" name="article_title" size="30" placeholder="Title" value="<?php echo set_value('article_title');?>" id="article_title"/> 
<input type="submit" value="Publish" name="publish" /> 
<input type="button" value="Preview" class="save"/> 
<input type="button" value="Save" class="see"/> 
</div> 

<div id="write_panel" style="width:700px; margin-left:50px; width:800px;"></div> 
<div id="write_area"> 
<textarea name="article_content" id="article_content" style="height:690px; width:800px;" ></textarea> 
<input type="hidden" value="<?php echo $articleId;?>" name="article_id" id="articleId"/> 
</div> 
</div> 

<?php echo form_close();?> 

我真的抓伤我的头这一点。

回答

0

刚刚得到答案。忘记添加将最后一个变量放入ajax文件的数据字符串中。