jQuery Ajax表单没有将数据发布到控制器(Codeigniter)

时间:2013-01-11 09:54:26

标签: jquery ajax codeigniter post

我有一个页面,用户可以在其中撰写有关某些网站的评论。 我需要将此数据发布到我的Codeigniter控制器,该控制器使用模型函数将数据插入数据库。 一切正常,直到我添加jquery,现在它没有发布,似乎根本没有去控制器。任何帮助解决这个问题将不胜感激。谢谢。

HTML

<table id="revForm">
    <tr>
        <td>Site reviewed:</td>
        <td><input readonly type="text" id="site" name="profile" value="<?php echo $sitename; ?>"></td>
    </tr>
    <tr>
        <td>Name:</td>
        <td> <input type="text" id="name" name="name" value="Enter name"> </td>            
    </tr>
    <tr>
        <td>Message:</td>
        <td><textarea row="6" column="40" id="message" name="message" value="message"></textarea></td>
    </tr>
    <tr>
        <td>Rate this site</td> 
        <td>
            <div>                        
                <input name="rating" type="radio" value="1" class="star"/>
                <input name="rating" type="radio" value="2" class="star"/>
                <input name="rating" type="radio" value="3" class="star"/>
                <input name="rating" type="radio" value="4" class="star"/>
                <input name="rating" type="radio" value="5" class="star"/>                    
            </div>

        </td>
    </tr>
</table><br>
<button id="submitReview2">Submit</button><br/>

控制人员'评论'

public function addReview() { 

    $this->load->helper('form');         
    if ($this->input->post("message")!="")  {
            $this->reviewsMod->addReview($this->input->post('profile'),
                                    $this->input->post('name'),
                                    $this->input->post('message'),
                                    date('d/m/Y'),
                                    $this->input->post('rating'));
            $data['sitename'] = $this->input->post('profile');
            $this->load->view('shared/header');
            $this->load->view('profile', $data );
            $this->load->view('shared/footer');                            
        }

        else {
            $this->load->view('shared/header', $session);
            $this->load->view('profile', $data);
            $this->load->view('shared/footer'); 
            }      
    }

的jQuery

$('#submitReview2').click(function() {
    var profile = $('#site').val();
    var name = $('#name').val();
    var message = $('#msg').val();
    var rating = $('#rating').val();

    var msgData = {
       'profile':profile,
       'name':name,
       'message':message,
       'rating':rating
    }
   var base_url = '<?php echo base_url(); ?>';
   $.ajax ({
       type: 'POST',
       url: base_url+'reviews/addReview',
       data:  msgData,
       success:
           function(){                   
                $('#revForm').html("<div id='success'></div>")
                $('#success').html("Your review has been submitted")
                .fadeIn(1500);
           }

  });
  return false;

模型功能

public function addReview($profile, $name, $message, $stamp, $rating) {
   $this->setValues($profile, $name, $message, $stamp, $rating);
   $this->db->insert('messages', $this);

}

3 个答案:

答案 0 :(得分:0)

您是否为base_url()函数加载了url帮助器?

$this->load->helper('url');

同时使用chrome并使用developertools检查“console”和“network”。

答案 1 :(得分:0)

我认为JQuery帖子不是这样的。 您需要使用Jquery .submit().post()方法。

请查看Jquery post()submit()

的示例和说明

1。Jquery submit 2。Jquery post

答案 2 :(得分:0)

首先为你的ajax请求指定错误句柄,这样你就可以看到错误发生后发生了什么:

$.ajax({
        //
        // Other parameters
        //
        success: function (result, textStatus, jqXHR) {
            // Some code
        },
        error: function (jqXHR, textStatus, errorThrown) {
           // Some code to debbug e.g.:               
           console.log(jqXHR);
           console.log(textStatus);
           console.log(errorThrown);
        }
    });

还开始使用某种javascript debbuging工具(取决于你正在使用的浏览器),就像某人说Chrome开发人员工具(在网站上按f12并转到网络标签)在Chrome或Firefox中的Firebug甚至是更复杂的桌面应用程序,如Fiddler

如果您仍然遇到发布数据的问题,请向我们提供有关您遇到的错误的更多信息