Javascript 如何在jquery请求的success函数中从局部变量获取值

Javascript 如何在jquery请求的success函数中从局部变量获取值,javascript,jquery,Javascript,Jquery,这可能是一个基本问题,因为我不太擅长javascript,也不理解闭包等,所以我很难将变量值传递到回调中。在这段代码中,我如何获得id的值以传递给success函数处理程序,从而使它在函数返回时可用 $(document).on("click","#media-edit-form .fancybox-submit", function(event){ var form = $(this).parents('form:first'); var token = $(

这可能是一个基本问题,因为我不太擅长javascript,也不理解闭包等,所以我很难将变量值传递到回调中。在这段代码中,我如何获得id的值以传递给success函数处理程序,从而使它在函数返回时可用

 $(document).on("click","#media-edit-form .fancybox-submit", function(event){
        var form = $(this).parents('form:first');
        var token = $("meta[name='_csrf']").attr("content");
        var header = $("meta[name='_csrf_header']").attr("content");
        var postData = form.serializeArray();
        var id = postData["id"];

        event.preventDefault ? event.preventDefault() : event.returnValue = false;

        var jqxhr = $.ajax(
            {
                url: form.attr('action'),
                type: 'POST',
                data: postData,
                headers: {'X-CSRF-TOKEN': token},
            }

         )
            .success(function(xhr) {

                var refreshZoneId = '#image-block' + id;
                var refreshZone = $(refreshZoneId);
                alert('refreshing');


            })
            .fail(function() {
                alert( "error" );
            });
    });

我认为问题不在于变量,而在于分配给它的值

试一试


问题是serializeArray返回数组,因此postData是数组而不是对象,因此postData[id]应返回未定义的,这可能是您的问题。

成功回调中应提供id值。。你有什么问题facing@ArunPJohny这是对的。这似乎是一个闭包,因此变量应该在作用域中。我认为问题在于postData[id]-返回一个数组而不是一个对象,因此postData[id]应该返回未定义的数组将具有键名称和值的对象。。。因此,您必须遍历数组以检查名称id以查找id的值,或者使用简单的jQuery选择器,如var id=$'input[name=id]'。val;如果id字段是name=id的输入元素,那么您使用的jQuery版本是什么?是否调用.success函数?我认为延迟对象没有成功的功能
var id = $('input[name="id"]').val();