【问题标题】:codeigniter controller not running while using ajax使用ajax时codeigniter控制器未运行
【发布时间】:2013-02-24 17:36:32
【问题描述】:

这个问题也和我之前的帖子有关

jquery ajax form submit not working with codeigniter but working otherwise

我想提交一个表单而不加载一个新的 php 页面。我正在使用代码点火器。当我使用预定义的值运行控制器时,它工作正常并将值插入数据库中。但是当我运行 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>

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

【问题讨论】:

  • 如果您没有禁用 index.php,请将 base_url 更改为 site_url
  • 试过了,没有成功
  • 你遇到了什么错误?
  • 尝试在firefix中使用firebug并查看控制台是否有错误。

标签: jquery ajax codeigniter view controller


【解决方案1】:

试试这样的代码。更改提交按钮

<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(){
       $.ajax({
            url: $('#article_form').attr('url'),
            type: 'POST',
            dataType: 'json',
            data: $('#article_form').serialize(),
            success: function(output_string){
                $('#result_table').append(output_string);
            }
        });
    });
</script>

<form name="article_form" method="POST" action="<?php echo site_url('main/submit_article');?>">
    <input type="text" name="title" id="title" placeholder="Title for your article" />
    <br>
    <textarea rows="12" name="body" id="body" placeholder="Tell your story"></textarea>
    <br>
    <input type="button" id="submit_article" value="Post" />
</form>

【讨论】:

  • 嘿,这可行,但它正在加载一个新的 php 页面。我希望它在不加载 php 页面的情况下提交表单,那就是我想使用 ajax
  • 在你的控制器中你必须加载一个视图并在它显示内容时将它传递给 div result_table。尝试用 jquery 处理。
【解决方案2】:

试试这个:

<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>
<script type="text/javascript">
    $('#submit_article').click(function(e){
       e.prevenDefault();
       $.post(
         '<?php echo site_url("main/submit_article");?>',
         $('#article_form').serialize()
       ).success(function(resp) {
          $('#result_table').append(output_string);
       });
    });
</script>

<form id="article_form" method="post" action="<?php echo site_url('main/submit_article');?>">
    <input type="text" name="title" id="title" placeholder="Title for your article" />
    <br>
    <textarea rows="12" name="body" id="body" placeholder="Tell your story"></textarea>
    <br>
    <input type="submit" id="submit_article" value="Post" />
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 2015-01-17
    • 2013-06-27
    • 1970-01-01
    • 2013-02-24
    • 2015-04-09
    相关资源
    最近更新 更多