0

コードイグナイターで自分のサイトに ajax プラス 1 ボタンを実装しようとしています。私は Ajax と codeigniter に非常に慣れていないので、ガイダンスが必要です。

これが、私が始めているコントローラーの部分です。これは、これを作成しようとしているプロファイル ビューを作成するメソッド内にあることに注意してください。

$voteId=  $this->input->post('voteId');

                    $upOrDown=  $this->input->post('upOrDown');

                    $status ="false";
                    $updateRecords = 0;

                    if($upOrDown=='upvote'){
                        $updateRecords = $this->community_model->updateUpVote($voteId);
                    }else{
                        $updateRecords = $this->community_model->updateUpVote($voteId);
                    }

                    if($updateRecords>0){
                        $status = "true";
                    }
                    echo $status;

            // This variable will be accessed from the view
            $data['airwave'] = $airwave;
            $data['profile_id'] = $profile_id;
            $this->load->view('includes/templates/main_page_template', $data);
            }

モデルのメソッドは次のとおりです。

function updateUpVote($voteId){
                $sql = "UPDATE airwaves_comments set thumbsup = thumbsup+1 WHERE thumbsup =?";
                $this->db->query($sql, array($voteId));
                return $this->db->affected_rows();
            }       

ここに私の見解があります:

<div id='thumb_holder'>
  <div id='thumb_report'>
    <a href='mailto:info@cysticlife.org'>
        &#149 report
    </a>
</div>
<div  class= 'thumb_counter'>
        +0
</div>
<div id='thumb_thumb'>
<a class='myButtonLink voteMe' id='1_upvote'<span id="1_upvote_result">+</span>></a>
    </div>
</div>

ここにスクリプトがあります:

<script>
        $(document).ready(function(){
              $(".voteMe").click(function() {
                var voteId = this.id;
                var upOrDown = voteId.split('_'); 
                $.ajax({
                    type: "post",
                    url: "account/profile/voteMe",
                    cache: false,               
                    data:'voteId='+upOrDown[0] + '&upOrDown=' +upOrDown[1],
                    success: function(response){                
                        try{
                            if(response=='true'){   
                                var newValue = parseInt($("#"+voteId+'_result').text()) + 1;            
                                $("#"+voteId+'_result').html(newValue);
                            }else{
                                alert('Sorry Unable to update..');
                            }
                        }catch(e) {     
                            alert('Exception while request..');
                        }       
                    },
                    error: function(){                      
                        alert('Error while request..');
                    }
                 });
            });
        });
    </script>

さらに、これは何が起こっているのかをよりよく理解するためにどのように見えるかですが、プラス記号の後に投票数があることを望みます:

ここに画像の説明を入力

要約すると: 基本的に、私は同様のデモ チュートリアルのチュートリアルを受講していましたが、それはまさに私がやろうとしていることではありませんでした。これは基本的に、チュートリアルからコードを取得し、それを自分のコードとつなぎ合わせて、特定のニーズを満たし、同時に ajax を学習しようとしています。テーブルの指定された列を(誤って)更新しているので、私は近づいているように感じますが、目に見えて機能させることはできません。

4

2 に答える 2

0

このコードをビューファイルに入れます

    <input type="hidden" name="siteurl" id="siteurl" value="<?php echo site_url(); ?>">
    <input type="hidden" name="baseurl" id="baseurl" value="<?php echo base_url(); ?>">

次に、スクリプトで隠された値を取得します

var site_path = $("#siteurl").val();    
var base_path = $("#baseurl").val();

 $.ajax({
                    type: "post",
                    url: site_path+"account/profile/voteMe",....
于 2013-06-10T06:02:56.257 に答える
0

あなたの問題が何を言っているのか正確にはわかりません。しかし、これはわかります。

ajax のビューをフェッチしようとすると、ビューをデータとして返す必要があります

http://ellislab.com/codeigniter/user-guide/general/views.html (ページの下部)

このような

$view = $this->load->view('includes/templates/main_page_template', $data, true);
echo $view;

これにより、レンダリングされたビューがブラウザに送信されます

于 2013-06-06T20:41:54.120 に答える