Javascript 如何在jquery请求的success函数中从局部变量获取值
这可能是一个基本问题,因为我不太擅长javascript,也不理解闭包等,所以我很难将变量值传递到回调中。在这段代码中,我如何获得id的值以传递给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 = $(
$(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();