0

我有一个调用 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(){与许多其他事件一起发生。

4

4 回答 4

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

于 2013-01-25T11:32:32.847 回答
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 + '">');
    }
});

});

于 2013-01-25T11:30:01.127 回答
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');
});
于 2013-01-25T11:30:21.130 回答
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 + '">');
    }
  }
});
于 2013-01-25T11:43:13.850 回答