javascript - Javascript 匿名函数内部的作用域

标签 javascript jquery scope anonymous-methods

我试图让一个函数从我可以使用的 ajax 调用返回数据。问题是函数本身被许多对象调用,例如:

function ajax_submit (obj)
{   
    var id = $(obj).attr('id');
    var message = escape ($("#"+id+" .s_post").val ());

    var submit_string = "action=post_message&message="+message;

    $.ajax({  
        type: "POST",  
        url: document.location,  
        data: submit_string,  
        success: function(html, obj) {
            alert (html);
        }  
    }); 

    return false;
}

这意味着在匿名“成功”函数中我无法知道调用 obj(或 id)实际上是什么。我能想到的唯一方法是将 id 附加到文档,但这似乎有点太粗糙了。还有其他方法吗?

最佳答案

您可以使用封闭范围内的变量,这种技术称为“闭包”。所以:

function ajax_submit (obj)
{   
    var id = $(obj).attr('id');
    var message = escape ($("#"+id+" .s_post").val ());

    var submit_string = "action=post_message&message="+message;

    $.ajax({  
        type: "POST",  
        url: document.location,  
        data: submit_string,  
        success: function(html) {
            alert(obj.id);  // This is the obj argument to ajax_submit().
            alert(html);
        }  
    }); 

    return false;
}

关于javascript - Javascript 匿名函数内部的作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2731655/

相关文章:

javascript - 将数字转换为罗马数字

javascript - 获取重试请求(失败时)

jquery - contentWindow.document.execCommand ('print' , false, null) 在 Firefox 中不起作用

javascript - 从 Fiddle 结合 HTML 和 JS

javascript - Javascript 中 IIFE 的作用域

javascript - 奇怪的 Firefox SWFObject 显示问题

javascript - Ajax - 将 JSon 渲染为 HTML : View vs Controller

javascript - 将类添加到父级span元素jquery

var 和变量的范围

C - 递归函数