2010-01-12 167 views
1

我刚刚在使用asp.net的网站上做了相当大的更新。在新的更新中,我更改了很多代码,以便使用jquery代替asp.net web服务。我的许多用户遇到问题,直到他们刷新浏览器中的所有缓存才能使用新更新。因为告诉每个人刷新缓存需要做很多工作,也许我可以在加载新更新时强制刷新?在浏览器中强制高速缓存刷新

一个典型的Ajax调用,用户有问题是:

$.ajax({ 
    type: "GET", 
    url: url, 
    dataType: "json", cache: false, data: "{}", contentType: "application/json; charset=utf-8".... 

在服务器计算机上我日志中的错误,它看起来是这样的:

Error Message: There was no channel actively listening at 'http://www.domain.com/Service.svc/get?date=2010-01-12&_=1263327373122&{}'. This is often caused by an incorrect address URI. Ensure that the address to which the message is sent matches an address on which a service is listening. 

的“_ = 1263327373122”部分不应该在那里..当用户刷新他们的缓存它再次完美。我该如何解决这个问题?

回答

3

如果您不想发送任何数据,只需省略data参数或将其更改为data: {}(不含引号)。它认为你想发送字符串"{}"

参数_因为您指定的cache: false而被发送。

此外,我认为你不应该用自己的参数“构建”URL并传递一个空的数据对象。 jQuery为你做。

即代替

$.ajax({ 
    type: "GET", 
    url: "http://mydomain/service?date=" + mydate, 
    data: {} }); 

做这个

$.ajax({ 
    type: "GET", 
    url: "http://mydomain/service", //this remains constant 
    data: {date: mydate} }); 
+0

这样我就可以使用“数据”,即使它是一个获取,而不是邮寄我的参数? – Martin

+0

是的,如果它不是字符串,它将被转换为查询字符串 –