热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

asp.net微信开发中永久素材管理介绍

这篇文章主要介绍了asp.net微信开发中有关永久素材管理的相关内容,需要的朋友可以参考下
这篇文章讲述asp.net微信开发中永久素材管理介绍的相关内容,需要的朋友可以参考下

除了3天就会失效的临时素材外,开发者有时需要永久保存一些素材,届时就可以通过本接口新增永久素材。

最近更新,永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽)。

请注意:

  • 1、新增的永久素材也可以在公众平台官网素材管理模块中看到

  • 2、永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000,其他类型为1000

  • 3、素材的格式大小等要求与公众平台官网一致。具体是,图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式,语音大小不超过5M,长度不超过60秒,支持mp3/wma/wav/amr格式

  • 4、调用该接口需https协议

先来看我自己自定义的后台永久素材管理效果图,如下:

/// 
 /// 微信永久素材实体类,用于保存永久素材上传至微信服务器后返回的数据
 /// 
 public class WxSuCaiInfo
 {
 public int SuCaiId { get; set; }//自增列序号

 public string SuCaiUrl { get; set; }// 存储文件名

 public string SuCaiType { get; set; }//素材类型,可分为image,voice,video,thumb(缩略图)

 public string SuCaiTitle { get; set; }//图文消息的标题

 public string SuCaiDigest { get; set; }//图文消息的摘要


 public string SuCaiauthor { get; set; }//图文消息的作者
 public string SuCaishow_cover_pic { get; set; }//图文消息是否显示封面.保存0或1

 public string SuCaicontent { get; set; }//图文消息的正文内容
 public string SuCaicontent_source_url { get; set; }//图文消息的原文链接


 public string media_ID { get; set; }//上传至微信服务器后,返回的永久mediaID


 public string Url { get; set; }//上传至微信服务器后,返回的图片URL,仅图片才会返回此属性

 public string uploadDate { get; set; }//上传日期时间


 }


第二步:上传图片至微信服务器,成功后将返回的media_id和url两个字段数据和其他字段数据一并保存到本地服务器,上传的代码如下:


 /// 
 /// 上传图片至微信服务器,并且本地也保存一份
 /// 
 /// 
 /// 
 protected void LinBtnUploadImg_Click(object sender, EventArgs e)
 {
  if (this.FileUploadImage.HasFile)
  {
  string fileCOntentType= FileUploadImage.PostedFile.ContentType;
  if (fileCOntentType== "image/bmp" || fileCOntentType== "image/gif" || fileCOntentType== "image/png" || fileCOntentType== "image/x-png" || fileCOntentType== "image/jpeg"
   || fileCOntentType== "image/pjpeg")
  {
   int fileSize = this.FileUploadImage.PostedFile.ContentLength;

   if (fileSize <= 2097152)
   {
   string fileName = this.FileUploadImage.PostedFile.FileName;
   // 客户端文件路径
   string filepath = FileUploadImage.PostedFile.FileName; //得到的是文件的完整路径,包括文件名,如:C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg 
   //string filepath = FileUpload1.FileName;  //得到上传的文件名20022775_m.jpg 
   string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);//20022775_m.jpg 
   string serverpath = Server.MapPath("~/WeiXinImg/") + filename;//取得文件在服务器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg

   //把图片上传至本地服务器
   this.FileUploadImage.PostedFile.SaveAs(serverpath);//将上传的文件另存为


   //上传图片素材至微信服务器,永久保存

   WeiXinServer wxs = new WeiXinServer();

   ///从缓存读取accesstoken
   string Access_token = Cache["Access_token"] as string;

   if (Access_token == null)
   {
    //如果为空,重新获取
    Access_token = wxs.GetAccessToken();

    //设置缓存的数据7000秒后过期
    Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
   }

   string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


   string url = string.Format("http://api.weixin.qq.com/cgi-bin/material/add_material?access_token={0}&type={1}", Access_tokento,"image");

   try
   {

    string res = HttpUploadFile(url, serverpath);
    //判断res结果集里面是否包含media_id
    if (res.Contains("media_id"))
    {
    //如果能进行到这里,那说明图片已经上传至微信服务器,是永久素材哦,
    //开始解析json串,使用前需要引用Newtonsoft.json.dll文件
    JObject jsOnObj= JObject.Parse(res);

    

    //图片上传成功后,返回的是两个字段,media_id和url


    //将两个字段开始存入数据库,保存数据,方便获取列表的时候直接从本地服务器读取
    WxSuCaiInfo wsc = new WxSuCaiInfo();

    wsc.SuCaiUrl = filename;//注意,这里保存的图片名称

    wsc.SuCaiType = "image";//文件类型

    wsc.media_ID = jsonObj["media_id"].ToString();//这个属性保存的是微信返回的media_id

    wsc.Url = jsonObj["url"].ToString();//这个属性保存的才是微信返回的url

    wsc.uploadDate = System.DateTime.Now.ToString();//记录当前文件上传日期时间

    //存入数据库
    WxSuCaiService wscs = new WxSuCaiService();


    int num = wscs.AddWxSuCaiInfo(wsc);

    if (num > 0)
    {
     Response.Write("");
    }
    else
    {
     Response.Write("");
    }
    }
   }
   catch(Exception ex)
   {
    Response.Write(ex.Message.ToString());
   }
   }
   else
   {
   Response.Write("");
   }

  }
  else
  {
   Response.Write("");
  }
  }
  else
  {
  Response.Write("");
  }
 }


走到这其实效果已经出来了,接下来看最后一步就是删除选中的素材,删除微信远程服务器的数据--再删除本地服务器的数据,有人问难道这个还有顺序?
其实你可以想象,如果微信服务器的图片没有删除成功,你先把本地服务器的图片删除了,那就和官网同步不了了。
第三步:删除素材


 /// 
 /// 全选全不选
 /// 
 /// 
 /// 
 protected void CheckAll_CheckedChanged(object sender, EventArgs e)
 {
  foreach (DataListItem item in this.DLSuCaiImageList.Items)
  {
  CheckBox checkIn = item.FindControl("CheckIn") as CheckBox;
  checkIn.Checked = CheckAll.Checked;
  }
 }
 /// 
 /// 删除选中项
 /// 
 /// 
 /// 
 protected void LinkBtnDeleteSelected_Click(object sender, EventArgs e)
 {
  Boolean ischeck = false;

  foreach (DataListItem item in this.DLSuCaiImageList.Items)
  {
  CheckBox checkIn = item.FindControl("CheckIn") as CheckBox;
  if (checkIn.Checked)
  {
   ischeck = true;
   Label lbSuCaiId = item.FindControl("lbSuCaiId") as Label;
   Label lbSuCaiUrl = item.FindControl("lbSuCaiUrl") as Label;
   Label lbmedia_ID = item.FindControl("lbmedia_ID") as Label;
   
   //删除微信服务器上的图片
   WeiXinServer wxs = new WeiXinServer();
   string res = "";

   ///从缓存读取accesstoken
   string Access_token = Cache["Access_token"] as string;

   if (Access_token == null)
   {
   //如果为空,重新获取
   Access_token = wxs.GetAccessToken();

   //设置缓存的数据7000秒后过期
   Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
   }

   string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


   string posturl = "https://api.weixin.qq.com/cgi-bin/material/del_material?access_token=" + Access_tokento;


   //POST数据例子: POST数据例子:{"media_id":MEDIA_ID}

   string media_id = lbmedia_ID.Text.ToString();

   string postData = "{\"media_id\":\"" + media_id + "\"}";

   res = wxs.GetPage(posturl, postData);

   if (res.Contains("errcode"))
   {
   //开始解析json串,使用前需要引用Newtonsoft.json.dll文件
   JObject jsOnObj= JObject.Parse(res);

   if (jsonObj["errcode"].ToString().Equals("0"))
   {

    ///获取本地服务器的路径
    string serverPathss = Server.MapPath("~/WeiXinImg/") + lbSuCaiUrl.Text.ToString();
    //验证本地服务的路径是否存在该图片
    if (File.Exists(serverPathss))
    {
    //如果存在就删除
    File.Delete(serverPathss);
    }

    WxSuCaiService wscs = new WxSuCaiService();
    //通过media_id删除本地服务器数据库记录
    int num = wscs.DeleteWxSuCaiInfo(lbmedia_ID.Text.ToString());
    if (num > 0)
    {
    Response.Write("");
    }
    else
    {
    Response.Write("");
    }
   }
   } 
  }
  }
  if (!ischeck)
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;请先选中删除项!!!&#39;)", true);
  return;
  }
 }


最后是页面的代码一并奉上,大家仔细研究。






 
 
 


 
 

位置:

  • 首页
  • 微信管理
  • 德桥员工服务中心--素材管理

素材管理永久素材和微信官网同步,您在这里所操作的任何一项,将影响到官网后台素材管理,谨慎操作!

上传 支持jpg,gif,png,bmp格式图片,大小2M内,如上传成功后,图片未能显示,请将图片重新命名后再尝试上传.

全选 删除选中

&#39; style="height:120px; width:150px; border:0px;" />

&#39; runat="server" Text=&#39;<%# Eval("SuCaiUrl").ToString().Length>8?Eval("SuCaiUrl").ToString().Substring(0,8)+"...":Eval("SuCaiUrl").ToString() %>&#39;>

<%# Eval("uploadDate").ToString().Length>20?Eval("uploadDate").ToString().Substring(0,20)+"...":Eval("uploadDate").ToString() %> &#39;> &#39;>


其他素材上传都类似,就不一一介绍了。
新建图文素材界面如下:

 /// 
 /// 确认选择,选中之后,跳转至新建图文页面
 /// 
 /// 
 /// 
 protected void LinkBtnSubMitSelected_Click(object sender, EventArgs e)
 {

  Boolean bools = false;
  int num = 0;
  foreach (DataListItem item in this.DLSuCaiImageList.Items)
  {
  CheckBox checkIn = item.FindControl("CheckIn") as CheckBox;

  if (checkIn.Checked)
  {
   num += 1;
   bools = true;
  }
  }
  if (!bools)
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;请选择一个图片素材!!!&#39;)", true);
  return;
  }
  if (num >= 2)
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;您只能选择一个图片素材!&#39;);", true);
  return;
  }
  else
  {
  foreach (DataListItem item in this.DLSuCaiImageList.Items)
  {
   CheckBox checkIn = item.FindControl("CheckIn") as CheckBox;

   if (checkIn.Checked)
   {
   ///获取选中图片media_id
   Label lbmedia_ID = item.FindControl("lbmedia_ID") as Label;
   Session["imgmedia_id"] = lbmedia_ID.Text.ToString();
   Response.Write("");
   }
  }
  }
 }


新建图文的页面在接收的时候可以这样:


 if (Session["imgmedia_id"] != null)
   {
   WxSuCaiService wscs = new WxSuCaiService();

   WxSuCaiInfo wscinfo = wscs.GetWxSuCaiInfo(Session["imgmedia_id"].ToString());

   if(wscinfo!=null)
   {
    this.ImgTuWen.ImageUrl = "~/WeiXinImg/" + wscinfo.SuCaiUrl.ToString();
    this.ImgTuWen2.ImageUrl = "~/WeiXinImg/" + wscinfo.SuCaiUrl.ToString();
    this.ImgTuWen2.Visible = true;
    Session["imgmedia_id"] = wscinfo.media_ID.ToString();//图片的media_id
    Session["fileNameimg"] = wscinfo.SuCaiUrl.ToString();//图片的文件名称
   }


   }


最后新建图文信息的效果图如下:

 /// 
 /// 绑定事件
 /// 
 /// 
 /// 
 protected void DLMpNewsList_ItemDataBound(object sender, DataListItemEventArgs e)
 {
  if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
  {
  LinkButton LinkBtnDeleteSucai = e.Item.FindControl("LinkBtnDeleteSucai") as LinkButton;


  LinkBtnDeleteSucai.Attributes.Add("OnClick","return confirm(&#39;您确定删除该图文素材???删除后将和微信官网同步删除!!&#39;)");


  HyperLink HyperLinkEdit = e.Item.FindControl("HyperLinkEdit") as HyperLink;

  HyperLinkEdit.Attributes.Add("OnClick", "return confirm(&#39;即将进入编辑模式!!是否执行下一步操作??&#39;)");


  Label lbmedia_ID = e.Item.FindControl("lbmedia_ID") as Label;


  HyperLinkEdit.NavigateUrl = "WxNewTuWen.aspx?media_id=" + lbmedia_ID.Text.ToString();//把图文消息的media_id传参到新建图文界面

  }
 }


 if(!Page.IsPostBack)
  {
  ///编辑模式
  if (Request.QueryString["media_id"] != null)
  {
   string media_id = Request.QueryString["media_id"].ToString();

   Session["sucaimedia_id"] = media_id;

   WxSuCaiService wscs = new WxSuCaiService();


   WxSuCaiInfo wscinfo = wscs.GetWxSuCaiInfo(media_id);

   if (wscinfo != null)
   {
   this.txttuwen_title.Value = wscinfo.SuCaiTitle.ToString();

   if (wscinfo.SuCaiTitle.ToString().Length > 15)
   {
    this.biaoti_yulan.InnerText = wscinfo.SuCaiTitle.ToString().Substring(0, 15) + "...";
   }
   else
   {
    this.biaoti_yulan.InnerText = wscinfo.SuCaiTitle.ToString();
   }

   this.txttuwen_author.Value = wscinfo.SuCaiauthor.ToString();
   this.txtzhaiyao.InnerText = wscinfo.SuCaiDigest.ToString();
   this.ImgTuWen.ImageUrl = "~/WeiXinImg/" + wscinfo.SuCaiUrl.ToString();
   this.ImgTuWen2.ImageUrl = "~/WeiXinImg/" + wscinfo.SuCaiUrl.ToString();
   this.ImgTuWen2.Visible = true;
   Session["imgmedia_id"] = wscinfo.SuCaithumb_media_id.ToString();
   this.LinkBtnDeleteImg.Visible = true;

   if (!String.IsNullOrWhiteSpace(wscinfo.SuCaicontent_source_url.ToString()))
   {
    this.txtYuanWenUrl.Text = wscinfo.SuCaicontent_source_url.ToString();
    this.txtYuanWenUrl.Visible = true;
    this.CheckYuanWen.Checked = true;
   }

   this.txtYuanWenUrl.Text = wscinfo.SuCaicontent_source_url.ToString();

   this.tbContent.InnerText = wscinfo.SuCaicontent.ToString();


   if (wscinfo.SuCaishow_cover_pic.ToString().Equals("1"))
   {
    this.CheckFengMianShow.Checked = true;
   }
   else
   {
    this.CheckFengMianShow.Checked = false;
   }
   }
  }
  }


/// 
 /// 保存图文素材和修改按钮公用
 /// 
 /// 
 /// 
 protected void LinkBtnSaveYongjiu_Click(object sender, EventArgs e)
 {
  //非空验证
  if (String.IsNullOrWhiteSpace(this.txttuwen_title.Value.ToString()))
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;请输入图文标题!&#39;);", true);
  return;
  }
  if (this.ImgTuWen2.ImageUrl.ToString().Equals(""))
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;必须上传一张图片!&#39;);", true);
  return;
  }
  if (String.IsNullOrWhiteSpace(this.tbContent.InnerText.ToString()))
  {
  ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "", "alert(&#39;请输入正文内容!&#39;);", true);
  return;
  }

  //对各项进行赋值
  WeiXinServer wxs = new WeiXinServer();

  ///从缓存读取accesstoken
  string Access_token = Cache["Access_token"] as string;

  if (Access_token == null)
  {
  //如果为空,重新获取
  Access_token = wxs.GetAccessToken();

  //设置缓存的数据7000秒后过期
  Cache.Insert("Access_token", Access_token, null, DateTime.Now.AddSeconds(7000), System.Web.Caching.Cache.NoSlidingExpiration);
  }

  string Access_tokento = Access_token.Substring(17, Access_token.Length - 37);


  
 //根据session判断media_id是否为空,也可根据request.queryString["media_id"]进行判断是否为空
  if (Session["sucaimedia_id"] != null)
  {
  //执行更新操作

  //{
  // "media_id":MEDIA_ID,
  // "index":INDEX,
  // "articles": {
  // "title": TITLE,
  // "thumb_media_id": THUMB_MEDIA_ID,
  // "author": AUTHOR,
  // "digest": DIGEST,
  // "show_cover_pic": SHOW_COVER_PIC(0 / 1),
  // "content": CONTENT,
  // "content_source_url": CONTENT_SOURCE_URL
  // }
  //}

  string isshow_cover_pic = "";
  if (this.CheckFengMianShow.Checked)
  {
   isshow_cover_pic = "1";
  }
  else
  {
   isshow_cover_pic = "0";
  }

  string description = NoHTML(this.tbContent.InnerText.ToString());

  string postData = "{\"media_id\":\"" + Session["sucaimedia_id"].ToString() +
   "\",\"index\":\"0\" ,\"articles\":{\"title\":\"" + this.txttuwen_title.Value.ToString() +
   "\",\"thumb_media_id\":\"" + Session["imgmedia_id"].ToString() +
   "\",\"author\":\"" + this.txttuwen_author.Value.ToString() +
  "\",\"digest\":\"" + this.txtzhaiyao.InnerText.ToString() +
  "\",\"show_cover_pic\":\"" + isshow_cover_pic +
  "\",\"content\":\"" + description +
  "\",\"content_source_url\":\"" + this.txtYuanWenUrl.Text.ToString() +
  "\"}}";


  ///修改永久图文素材
  string url = string.Format("https://api.weixin.qq.com/cgi-bin/material/update_news?access_token={0}", Access_tokento);

  string jsOnres= PostUrl(url, postData);

  if (jsonres.Contains("errcode"))
  {
   //使用前需要引用Newtonsoft.json.dll文件
   JObject jsOnObj= JObject.Parse(jsonres);

   if (jsonObj["errcode"].ToString().Equals("0"))
   {
   //修改本地数据
   //保存数据,方便获取列表的时候直接从本地服务器读取
   WxSuCaiInfo wsc = new WxSuCaiInfo();

   wsc.SuCaiUrl = Session["fileNameimg"].ToString();//注意,这里保存的图片名称

   wsc.SuCaiTitle = this.txttuwen_title.Value.ToString();//图文消息的标题

   wsc.SuCaiDigest = this.txtzhaiyao.InnerText.ToString();//图文消息的摘要

   wsc.SuCaithumb_media_id = Session["imgmedia_id"].ToString();//图文的消息封面media_id

   wsc.SuCaiauthor = this.txttuwen_author.Value.ToString();

   wsc.SuCaishow_cover_pic = isshow_cover_pic;

   wsc.SuCaicOntent= description;

   wsc.SuCaicontent_source_url = this.txtYuanWenUrl.Text.ToString();

   wsc.uploadDate = System.DateTime.Now.ToString();//记录当前文件保存图文素材日期时间

   //修改数据库信息
   WxSuCaiService wscs = new WxSuCaiService();

   int num = wscs.UpdateWxSuCaiInfo(Session["sucaimedia_id"].ToString(), wsc);

   if (num > 0)
   {
    Session["sucaimedia_id"] = null;
    Response.Write("");
   }
   else
   {
    Response.Write("");
   }

   }

  }

  }
  else
  {
  //新增图文素材
  }
 }


需注意:新建图文页面和修改图文页面是公用的一个页面.......

编辑提交按钮和保存按钮是公用的一个按钮.....

精彩专题分享:ASP.NET微信开发教程汇总,欢迎大家学习。

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上就是asp.net微信开发中永久素材管理介绍的详细内容,更多请关注php中文网其它相关文章!


推荐阅读
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。使用Gson解析json成对象时,默认将json里对应字段的值解析到java对象里对应字段的属性里面。然而,当我们自己定义的java对象里的属性名与json里的字段名不一样时,我们可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。本文介绍了使用@SerializedName注解解析json数据的方法,并给出了具体的使用示例。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • 原理:dismiss再弹出,把dialog设为全局对象。if(dialog!null&&dialog.isShowing()&&!(Activity.)isFinishing()) ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
author-avatar
手机用户2502896567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有