13

div内でajax応答の値を表示しようとしています。そのために、ビューファイルに次のコードがあります。

<script type="text/javascript" src="MY LINK TO JQUERY"></script>

<script  type="text/javascript">
     $(function(){ // added
     $('a.vote').click(function(){
         var a_href = $(this).attr('href');

     $.ajax({
            type: "POST",
            url: "<?php echo base_url(); ?>contents/hello",
            data: "id="+a_href,
            success: function(server_response){
                             if(server_response == 'success'){
                                  $("#result").html(server_response); 
                             } 
                             else{
                                  alert('Not OKay');
                                 }

                      }
  });   //$.ajax ends here

  return false
    });//.click function ends here
  }); // function ends here
 </script>

  <a href="1" title="vote" class="vote" >Up Vote</a>
  <br>
  <div class="result"></div>                                        

私のコントローラー(ajaxが値を送信している):

function hello() {
              $id=$this->input->post('id');
              echo $id;
             }      

今私が達成しようとしているの<div class="result"></div>は、ビューファイルのサイドにあるserver_response値(コントローラーから送信されている値)を取得することです。

次のコードを試しましたが、div内の値が表示されません。

問題がどこにあるのか教えていただけますか?

4

3 に答える 3

13

問題は、 Ajaxsuccessハンドラーの引数が混在していることです。最初にdataスクリプトが返すものに行き、次に行きtextStatusます。理論的には、「タイムアウト」、「エラー」、「未変更」、「成功」、「パーサーエラー」のいずれかになります。ただし、successtextStatusでは常に成功します。ただし、alertエラーを追加する必要がある場合は、errorハンドラーを追加できます。はい、$( "#result")のセレクターをクラスに変更します。したがって、修正されたコードは次のようになります。

$.ajax({
    type: "POST",
    url: "<?php echo base_url(); ?>contents/hello",
    data: "id=" + a_href,
    success: function(data, textStatus) {
        $(".result").html(data);    
    },
    error: function() {
        alert('Not OKay');
    }
});​
于 2012-05-13T23:17:08.170 に答える
6
success: function(server_response) {
        $(".result").html(server_response);
}​

<div class="result"></div> // result is the class

セレクターはすべきではあり.resultません#result

于 2012-05-13T23:13:15.843 に答える
1

に変更<div class="result"></div>してみて<div id="result"></div>ください。これは、ajax成功関数で参照しているものだからです。

$("#result").html(server_response);

于 2012-05-13T23:12:38.613 に答える