这可能是一个基本问题,因为我不是特别擅长使用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" );
});
});
答案 0 :(得分:0)
我认为问题不在于变量,而在于赋值给它。
尝试
var id = $('input[name="id"]').val();
问题是serializeArray()返回一个数组,因此postData
是一个数组而不是一个对象,所以postData["id"]
应该返回undefined
这可能是你的问题。