1

問題は、submit を使用すると、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 に答える