1

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

控制器:

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:( 对不起,我只是从教程中复制的。)

    $(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();?>

我真的为此挠头了。

4

1 回答 1

0

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

于 2013-03-11T03:16:26.783 回答