Jquery Ajax请求第二次没有到达服务器

时间:2013-12-01 18:23:47

标签: jquery ajax wcf web-services get

我正在网站上工作,我需要通过Jquery ajax调用服务来读取数据。

我正在做以下事情:

$.ajax({
    type: "GET",
    async: "true",
    dataType: 'json',
    url: urlString,
    beforeSend : function (){

    },
    success: function (data) {
        LoadData(data);
    },
    failure: function (request, status, error) {
        alert("Request failed. Please try again later.");
    },
    complete: function () {
    }
});

请求正常。

然而,当我使用相同的URL再次调用它时,请求直接转到“成功”,而不通过Web服务。就像数据从前一个请求中缓存一样,它会直接返回它。

对于服务器端,我使用带有Entity framework 6.0的WCF Web服务和存储过程来从数据库中读取

我的问题是:

  1. 这是客户端行为还是服务器行为?
  2. 如果服务器上的数据发生变化,会发生什么?我仍然会获得旧数据,因为它是缓存的吗?
  3. 如果是这种情况我该如何防止这种行为?因为服务器上的数据不断变化
  4. 感谢您的任何澄清

2 个答案:

答案 0 :(得分:4)

  1. 客户端
  2. 使用缓存破坏程序,如果将cache设置为false
  3. ,jQuery.ajax会执行此操作
    $.ajax({
        type: "GET",
        cache: false,
        async: "true",
        dataType: 'json',
        url: urlString,
        beforeSend : function (){
    
        },
        success: function (data) {
            LoadData(data);
        },
        failure: function (request, status, error) {
            alert("Request failed. Please try again later.");
        },
        complete: function () {
        }
    });
    

答案 1 :(得分:0)

当您进行Get调用时,它将被您的浏览器缓存(客户端行为)。 您可以在通话中使用cache: false

$.ajax({
    type: "GET",
    async: "true",
    cache: false,   <---------
  

将缓存设置为false只能与HEAD和GET一起正常工作   要求。它的工作原理是将“_ = {timestamp}”附加到GET参数

More Info