访问$ .post jQuery中的变量

时间:2013-01-25 11:27:37

标签: javascript jquery .post jquery-post

我有一个调用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 个答案:

答案 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 + '">');
    }
  }
});