0

ajaxの仕組みを理解するためだけに、codeigniterなしでjquery ajaxを使用してフォームを送信しようとしました。うまくいきましたが、今度は codeigniter で実行したいと思います (CI でアプリケーションを開発しているため)。データベースに値を挿入していません。どこに問題があるかを確認する方法がわからない

これは私のフォームです:-

<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>

Main はコントローラーで、これは関数 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 という 2 つの値が関数 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;
        }
    }
4

2 に答える 2

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;
}

}

それが解決することを願っています.....

于 2013-02-27T09:29:21.207 に答える
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();
});
于 2013-02-24T15:47:15.500 に答える