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

时间:2014-09-09 11:15:53

标签: javascript jquery

这可能是一个基本问题,因为我不是特别擅长使用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" );
            });
    });

1 个答案:

答案 0 :(得分:0)

我认为问题不在于变量,而在于赋值给它。

尝试

var id = $('input[name="id"]').val();

问题是serializeArray()返回一个数组,因此postData是一个数组而不是一个对象,所以postData["id"]应该返回undefined这可能是你的问题。