其实这个是接着上一个ajax的处理。
这几篇文章其实都是为了这个小的淘宝应用服务的。
昨天做了预览,今天贴出生成图片的那个ajax。
实际上图片处理这块一开始就讲过了,以下两篇文章。一个是优化的一个未优化的。
http://blog.csdn.net/pengli2014/article/details/20768921
http://blog.csdn.net/pengli2014/article/details/20805673
光说不练假把式。上代码。
css代码,实际比昨天的多出来了一段。
table { font-size:12px; border:1px solid #dedede; margin:0 auto; }
table tr td { border: 1px solid #B1CDE3; background: #fff; font-size:12px; padding: 3px 3px 3px 8px; color: #4f6b72; }
table tr .title { text-align:left; }
.window { width:480px; background-color:#d0def0; position:absolute; padding:2px; margin:5px; display:none; }
.window2 { position:absolute; display:none; background-color:#d0def0; width:450px; height:200px; line-height:200px; font-size:20px; color:red; text-align:center; }
.window .close { position:absolute; right:0px; top:0px; width:40px; height:20px; text-align:center; color:red; font-weight:bold; cursor:pointer; }
close按钮,实际不是一个按钮,想怎么变,自己改css样式吧。
生成图片的混编代码。
<td><a href="javascript:create_picture('<?php echo $v['gid']; ?>')">仅图片生成</a></td>
jquery代码和ajax
function create_picture(id){
$.ajax({
url: "create_pic.php",
data: { gid: id },
dataType: "json",
beforeSend: function(){
//alert("before!");
$(".window2").attr("display","block").html("图片生成中,请稍等………").css("top","30%").css("color","red").css("left","40%").slideToggle("slow");
},
complete: function(data,status){
//alert("success!");
$(".window2").html("图片生成完毕了!").css("color","green").hide(3000);
}
})
}
最后是create_pic.php代码
$gid = isset($_GET['gid'])? $_GET['gid'] : exit("paramer error");//商品id
$goods = new Goods($c,$sessionKey);
$itemInfo = $goods->getGoodsInfo($gid);
if(isset($itemInfo['item']['item_imgs']))
{
$itemPic = $itemInfo['item']['item_imgs']['item_img'];
foreach($itemPic as $k => $v)
{
$imgs[] = $v['url'];
}
}
else
{
exit("商品图片不存在!");
}
/*
$imgs = array(
"http://img03.taobaocdn.com/imgextra/i3/444857673/T2kr2kXApXXXXXXXXX-444857673.gif",
"http://img01.taobaocdn.com/imgextra/i1/444857673/T22SfkXClXXXXXXXXX-444857673.jpg",
"http://img03.taobaocdn.com/imgextra/i3/444857673/T22gMPXkRaXXXXXXXX_!!444857673.jpg"
);
*/
$width = 480;
$dir = "temp_pic\\".$gid."\\";
/*开始生成图片*/
if(!is_dir($dir))
{
mkdir($dir);
}
else
{
echo "目录已经存在";
}
$picName = "1-".$gid.".jpg";
$picObject = new Picture2($imgs,$dir);
$picArr = $picObject->createPicWithByWidth($width);
$mark = $picObject->joinPic($picArr,$width,$picName);
$pic = $picObject->picToCode($dir.$picName);//2进制
$dbObject = new Db('goods_info');
if($mark)
{
$where = " WHERE gid='".$gid."'";
$dbObject->update(array("status"=>1,"picture"=>$pic,"create_pic_time"=>time()),$where);//更新商品状态。
$dbObject->mysql_close();
}
其实这段代码不需要返回什么,就是处理就好。
ok,先贴这么多,我优化代码之后会贴出更新的版本。
我觉得success一直没有成功,原来是返回数据的类型在作怪。
换成如下的jquery代码。
function create_picture(id){
$.ajax({
type: "GET",
url: "create_pic.php",
data: { gid: id },
dataType: "html",
beforeSend: function(){
alert(1111);
$(".window2").attr("display","block").html("图片生成中,请稍等………").css("top","30%").css("color","red").css("left","40%").slideToggle("slow");
},
success: function(data){
alert(data);
$(".window2").html("图片生成完毕了!"+data).css("color","green").hide(3000);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
alert(textStatus);
}
})
}
dataType: "html",
返回的数据类型千万要注意了。
另外状态顺序是,before,success,error,complete.
(最后编辑:2014年3月15日12:12:48)