0

ユーザーが特定の Web サイトに関するレビューを書くことができるページがあります。このデータを 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);

}

4

3 に答える 3

0

base_url()関数のURLヘルパーをロードしましたか?

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

また、chromeを使用し、developertoolsを使用して「コンソール」と「ネットワーク」をチェックします。

于 2013-01-11T10:05:44.430 に答える
0

JQuery投稿はこのようには機能しないと思います。Jquery.submit()または.post()メソッドを使用する必要があります。

Jquery post()と の例と説明を見つけてくださいsubmit()

1. Jquery 送信 2. Jquery 投稿

于 2013-01-11T10:20:58.420 に答える
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);
        }
    });

また、誰かがChromeまたはFirefoxのFirebugまたはより洗練されたデスクトップでChrome開発者ツール(Webサイトにいるときにf12を押してネットワークタブに移動)と言ったような、ある種のjavascriptデバッグツール(使用しているブラウザによって異なります)の使用を開始しますFiddlerのようなアプリケーション

それでもデータの投稿に問題がある場合は、発生したエラーに関する詳細情報をお知らせください。

于 2013-01-11T10:42:19.640 に答える