2008年4月21日星期一

喜欢jQuery没道理

就是喜欢jQuery,今天完成了一个用jQuery调用WebService的功能,在AJAX调用过程中使用了JSON格式,服务器端的WebService是用ASP.NET AJAX Extensions 1.0封装的,客户端本来也打算用ASP.NET AJAX的,但后来发现它太麻烦了:JS脚本必须放在一个ASPX页面,而且必须添加ScriptManager控件,而且还会自动引入很多其他的JS脚本(ScriptResource.axd?xxxxxxxxx)。我还是喜欢jQuery的AJAX API。
其实用jQuery调用WebService很简单:

  1. WebService必须增加属性:[ScriptService]
  2. 必须使用POST方法
  3. HTTP Header的Content-type必须为:"application/json; charset=utf-8"
一个简单的例子如下:
WebService的定义如下:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[ScriptService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public CacheKey[] GetAllCacheKeys()
{
return CacheHelper.GetAllCacheKeys();
}

[WebMethod]
public void RemoveByTags(string[] tags)
{
CacheHelper.Remove(tags);
}
}
Javascript如下:
jQuery.ajax({
url: "WebServices/Cache/Service.asmx/GetAllCacheKeys",
type: "POST",
dataType: "json",
beforeSend: function(req){
req.setRequestHeader("Content-type", "application/json; charset=utf-8");
},
success: function(keys){
alert(keys.length);
$.each(keys, function(i, key){
alert(key.Key);
});
}
});
再来一个包含参数的例子:
jQuery.ajax({
url: "WebServices/Cache/Service.asmx/RemoveByTags",
type: "POST",
dataType: "json",
data: "{tags:['intid=3091','dbsung']}",
beforeSend: function(req){
req.setRequestHeader("Content-Type", "");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
}
});
为什么要多写一句
req.setRequestHeader("Content-Type", "");呢?原因是带有数据的Ajax调用在IE下执行时"Content-Type"会变成"application/x-www-form-urlencoded, application/json; charset=utf-8"原因不详,所以我就多写了一句,先清空"Content-Type"。

2008年1月20日星期日

试用Blog离线工具Qumana

本来是Mac平台的软件现在有了Windows版本了,使用一番看看如何。


首先软件的界面还可以,但还是觉得不想Windows下的程序


另外发现安已有Blog的Tags没有读取出来。


本来打算贴几副图片,最后提示我插入的是本地图片不会被显示在Blog中:-( 只能先传到Picasa了。



Tags: , , ,


Powered by Qumana


2008年1月19日星期六

Ubuntu中的Blog离线工具:Gnome-Blog

经过搜索发现了一些能在Ubuntu下使用的Blog离线工具,这篇文章是用Gnome-Blog发布的,Gnome-Blog安装以后的中文名称叫:Blog 条目张贴器,它非常简单而且支持Blogger.com,最让我高兴的是它能发现我在Blogger.com的Blog即使现在Blogger.com已经被封锁了,这一点不像Windows Live Writer,无论如何先试试能不能把Blog发布出去吧。
=======================================
看来Gnome-Blog对目前版本的Blogger.com的支持还是有问题呀:标题没有设置好,变成了内容。

2008年1月17日星期四

在GMail中用is:unread搜索未读邮件

今天在整理GMail的邮件的时候发现有100封未读邮件,但这些邮件并没有显示在GMail的当前页中,应该是很早之前的邮件,于是我就想看看怎么才能搜索到这些邮件,查询了GMail的联机帮助找到了这篇帮助:Using advanced search,用is:操作符就行了,另外还有很多其他操作符,这些操作符的设置很人性化很容易记住。

Google太伟大了!

2008年1月15日星期二

名词解释:REST

前几天在网上看到一个新的名词REST,搜索了很多资料都没看明白到底是个什么东东,后来看到这篇文章才大概搞明白它是什么了!另外在维基百科中也找的了相关解释:

表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。

另外从TerryLee技术专栏中找到了一篇介绍如何使用WCF创建REST风格的WEb Services的文章:Creating RESTful Web Services with Windows Communication Foundation,不过这篇文章还没详细阅读。