我有一个调用jQuery $.post
函数的事件。
我想访问$.post
函数中的已定义变量,我遇到了麻烦。
在这种情况下,我想访问currentId
变量。
$('.notMatching').click(function(){
var currentId = this.id;
$.post("http://"+ document.domain + baseUrl +"/tables/demo.json", { id: this.id },
function(dat){
alert(currentId); //undefined
if(dat['result']==1){
$(this).parent().html('<input type="checkbox" class="first" value="'+this.id+'">');
}
}
);
});
有办法吗?
顺便说一句,此事件位于$(document).ready(function(){
内,还有许多其他事件。
答案 0 :(得分:3)
你不需要做任何全球性的任务......
$('.notMatching').click(function(){
var that = this
$.post("http://"+ document.domain + baseUrl +"/tables/demo.json", { id: this.id },
function(dat){
alert(that.id);
if(dat['result']==1){
$(this).parent().html('<input type="checkbox" class="first" value="'+that.id+'">');
}
}
);
});
将this
变量分配给that
,您可以在$.post
答案 1 :(得分:1)
请全局声明变量!。
var currentId = null;
$('.notMatching').click(function() {
currentId = this.id;
$.post("http://" + document.domain + baseUrl + "/tables/demo.json", {
id : this.id
}, function(dat) {
alert(currentId);
//undefined
if (dat['result'] == 1) {
$(this).parent().html('<input type="checkbox" class="first" value="' + this.id + '">');
}
});
});
答案 2 :(得分:1)
回调中的范围已更改,您需要保留它
$('.notMatching').click(function(){
var currentId = this.id;
var that = this;
if (currentId)
$.post("http://"+ document.domain + baseUrl +"/tables/demo.json", { id: currentId }, function(dat){
if(dat['result']==1)
$(that).parent().html('<input type="checkbox" class="first" value="'+currentId+'">');
});
else
alert('No Id');
});
答案 3 :(得分:1)
var currentId = null;
var that = this;
$('.notMatching').click(function() {
currentId = this.id;
$.ajax({
'type' : 'POST',
'dataType' : 'JSON',
'data': {'id':currentId},
'url': "http://" + document.domain + baseUrl + "/tables/demo.json",
'success': function(response){
if ((JSON.parse(response)).result === 1) {
$(this).parent().html('<input type="checkbox" class="first" value="' + that.id + '">');
}
}
});