在启动超级简单的Ajax调用时,我尝试了很多方法来定位父元素和/或JS对象本身。我有3个同一类的div,仅此而已。当我点击一个时,我试图获得一个.html(responseHere)到那个DIV来简单地改变其中的内容,但我找不到一种方法来选择它而不给它一个ID等。
使用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>
编辑:当我提醒()出$(this)的值时,我只得到[object Object]
答案 0 :(得分:3)
您必须保持对所单击元素的引用。在Ajax回调中,this
引用window
对象:
$('.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;
(这意味着您还必须在Ajax调用中将数据类型从json
更改为text
)
答案 1 :(得分:1)
你的问题是,在Ajax调用中,this
是xhr对象,而不是.box
。
存储$box = $(this);
,然后执行$box.html(data);
答案 2 :(得分: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),并在ajax成功中我们把变量(cc)放到它,最后你会得到答案。 / p>