我在.dialog()函数中创建Jcrop。运行得很好,但我无法通过我的X和Y等值!
函数"updateCoords"有效,但我无法通过Ajax传递它的值!Fire Bug说,我想通过POST传递的变量没有定义,但"HOW!"-我在函数updateCoords()中定义了变量!XD-
function open_original(gallery_id, image_name){
$("#image_crop_canves").dialog({
modal:true,
width:634,
height:741,
buttons:{
"SAVE":function(){
$.ajax({
url: "send.php",
type: "POST",
data: "a=crop&x="+cx+"&y="+cy+"&w="+cw+"&h="+ch+"&gid="+gallery_id+"&id="+image_name,
success: function(){
$("#image_crop_canves").dialog('close');
window.location();
}
});
},
"CLOSE":function(){
$("#image_crop_canves").dialog('close');
}
}
});
$("#image_crop").html("<div id="image_holder_crop"><img id="cropbox" src="../../pics/gallery/" + gallery_id + "/original/" + image_name + "" /></div>");
$("#image_crop_canves").dialog('open');
function updateCoords(c) {
var cx = c.x;
var cy = c.y;
var cx2 = c.x2;
var cy2 = c.y2;
var cw = c.w;
var ch = c.h;
}
$('#cropbox').Jcrop({
aspectRatio: 140/360,
onSelect: updateCoords,
setSelect: [0, 0, 140, 360],
minSize: [140, 360]
});
}
问题是您在updateCoords(c)
函数中声明变量,但却试图在该函数之外访问它们。这是不可能的。您可以在open_original(gallery_id, image_name)
函数中声明这些变量(在$("#image_crop_canves").dialog({ ... })
之前),然后从updateCoords(c)
函数中设置它们的值,这样就可以在指定的对象中访问这些变量。
我为这个问题做了一个小"破解"——我只是给隐藏字段提供了jacrop坐标,然后在"保存"时读取它们!