div中的Ajax响应

时间:2012-05-13 23:10:01

标签: ajax jquery

我试图在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中显示值。

你能告诉我问题出在哪里吗?

3 个答案:

答案 0 :(得分:12)

问题是你有Ajax success handler的混合参数。首先是您的脚本返回的data,然后转到textStatus。从理论上讲,它可以是“超时”,“错误”,“未修改”,“成功”或“解析错误”。但是,在success中,textStatus将始终成功。但是,如果您需要在出错时添加alert,则可以添加error处理程序。是的,将$(“#result”)中的选择器更改为class。所以纠正后的代码可能如下所示:

$.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');
    }
});​

答案 1 :(得分:5)

success: function(server_response) {
        $(".result").html(server_response);
}​

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

选择器应为.result而不是#result

答案 2 :(得分:1)

尝试将<div class="result"></div>更改为<div id="result"></div>,因为这是您在ajax成功函数中引用的内容

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