使用其功能之外的返回数据

时间:2013-10-06 01:54:03

标签: jquery ajax function

以下是我正在使用的代码,我的目标是每当用户点击具有类名' .view_all'的按钮时。我想使用使用ajax返回的data并将其放入此line $(this).parent('div').siblings('.body_wrap').html(data);我已尝试过以下代码,但它无效。

$('.view_all').click(function (event) {
     $.ajax({
         type: 'POST',
         url: 'ajax/return_data.php'
     }).success(function (data) {
         $(this).parent('div').siblings('.body_wrap').html(data);
     });

 });

1 个答案:

答案 0 :(得分:2)

this是你的问题,ajax成功回调中的this不是你想到的DOM元素,而是jqXHR对象。有很多方法可以解决这个问题,最简单的方法是从外部缓存$(this)并在回调中使用它。尝试:

$('.view_all').click(function (event) {
    var $this = $(this); //Cache it here
     $.ajax({
         type: 'POST',
         url: 'ajax/return_data.php'
     }).success(function (data) {
          $this.parent('div').siblings('.body_wrap').html(data); //use it
     });

 });

另一种方法是设置ajax设置的context属性。

$('.view_all').click(function (event) {
     $.ajax({
         context:this, //set up context
         type: 'POST',
         url: 'ajax/return_data.php'
     }).success(function (data) {
          $(this).parent('div').siblings('.body_wrap').html(data); //Now 
     });
 });