2011-04-24 34 views
2

我嘗試了很多方法來在啓動超級簡單Ajax調用時定位父元素和/或JS對象本身。我有3個同班同學,只有一個。當我點擊一個,我嘗試獲得一個.html(responseHere)該DIV只是改變其中的內容,但我找不到一個方式來選擇它沒有給它一個ID等jQuery:將AJAX內容加載到'this'的父項

Javascript:

$(document).ready(function(){ 

$('.box').click(function(){ 

    $.get('ajax.php', function(data){ 
     $(this).html(data); 
    }, 'json'); 



    }); 
}); 

PHP:

<?php 

$var = 'This is some new content!'; 

echo json_encode($var); 

?> 

HTML:

<div class="box"> 
    Click me to change my content 
</div> 

編輯:當我提醒()出值$(這)我只得到[對象對象]

回答

3

你必須保持對被點擊元素的引用。裏面的Ajax回調,thiswindow對象:

$('.box').click(function(){ 
    var self = this; 
    $.get('ajax.php', function(data){ 
     $(self).html(data); 
    }, 'json'); 
}); 

此外,json_encode將無法​​正常工作,你必須通過一個數組或對象,而不是一個字符串。無論是創建正確的JSON:

$var = array('This is some new content!'); 

echo json_encode($var); 

看來,一個簡單的字符串確實是有效的JSON

這裏沒有理由撥打json_encode。你可以只返回文本:

echo $var; 

(這意味着你也不得不從json數據類型更改爲text在Ajax調用)

+0

我試過你的代碼,但沒有給出結果。當'this'是選定的DIV對象時,'this'如何引用窗口對象? – Melanie 2011-04-24 22:53:58

+0

@Melanie:你的意思是它不會改變輸出?你是否也更改過PHP?如果沒有,它將無法正常工作。在回調中,''**'不會引用clicked元素。 – 2011-04-24 22:56:08

+0

感謝您的啓發。儘管如此,使用JSON_ENCODE還是有效的。 – Melanie 2011-04-24 22:58:17

1

您的問題是,Ajax調用內,this是xhr對象,而不是.box了。

商店$box = $(this);,後來做$box.html(data);

+0

謝謝!這正是我所期待的。已經嘗試過類似的組合,但沒有結果。 – Melanie 2011-04-24 22:57:24

0
$('.close-btn').on('click touch',function() { 
    // store this to a variable for later use 
    var cc = $(this); 
    $.ajax({ 
     url:'del.php', 
     type:'POST', 
     data:{id:this.id}, 
     dataType:'html', 
     timeout:1000, 
     error:function() { 
      console.log('close failed'); 
     }, 
     success:function() { 
      console.log(cc); 
      cc.remove(); 
     } 
    }); 
}) 

嗨,看看我的代碼,這是你所需要的,這家店給一個變量(CC),並在阿賈克斯的成功,我們把變量(CC)至它,最後你會得到答案。

+0

或者如果使用ES6功能,只需使用箭頭功能即可。 – nicovank 2016-11-28 05:23:37