2012-02-01 74 views
1

目前,我已经设置了一个ajax调用,在更改某个特定字段时它应该执行一个php脚本。该脚本首先在页面加载时执行。jQuery Ajax只能执行一次,但似乎每次调用时都应该调用

AJAX调用

$j.ajax({url: prod_json_url, dataType: 'json', cache: true, 
    beforeSend: function(xhr) { 
    xhr.overrideMimeType('text/plain; charset=x-user-defined'); 
    }, 
    success: function(data) { 
    //things to do on success with JSON 
    } 
}); 

一切都在我的虚拟环境中进行测试的伟大工程,但是当我部署此不同的服务器将出现以下情况。

1)在页面加载时,我可以查看正在执行的FireBug中的URL并返回正确的JSON响应。日志记录显示它确实转到要执行的脚本并返回正确的数据。一切都像它应该的那样行事

2)然后点击更新该字段。通过再次在控制台中查看Firebug,正在执行正确的URL,但是,JSON响应不正确。它保持页面加载时发生的相同。当我添加日志记录时,它似乎从未实际到达更新的URL。 (这是与更新参数的页面加载相同的URL)。 3)如果我等待一段时间,再试一次,它有时表现得像它应该再次一样,但仅限于一次执行。

此行为使我相信这是一个缓存问题。有没有人有我如何解决这个问题或我应该寻找或检查什么变量的想法?数据库是完全一样的,我不知道还有什么可能造成这种情况。任何帮助是极大的赞赏!请让我知道,如果更多的信息也会有所帮助。

+0

尝试将'cache:true'更改为'cache:false'并查看是否清除它。 – 2012-02-01 16:42:09

+0

你使用什么服务器端语言?你可以在那里控制你的头文件,并且你应该禁用'$ .ajax'缓存。 – yoda 2012-02-01 16:42:59

+0

对不起,我以前更新过缓存:false,并且仍然无法在其他服务器上正常工作。始终在测试中工作。 @yoda我正在使用PHP。 – Rosemary 2012-02-01 16:46:55

回答

0

尝试复制将当前时间到URL你加载数据:

prod_json_url + '?ts=' + $.now()'

高速缓存控制HTML头显然是忽略IE中的Ajax请求,因此cache:false不够。这应该工作,但。

$.now()new Date().getTime()的快捷方式;

+0

问题是prod_json_url过长,并且缓存实现每次都将它看作是相同的url,即使参数正在改变。通过在URL中更早的时间添加,它解决了我的问题与缓存。谢谢! – Rosemary 2012-02-07 17:23:40

0

将缓存设置为false。好像那里有客户端缓存

+0

There是客户端缓存,但我不确定在更新字段时如何或为什么会影响ajax调用。这就是我想要解决的问题,但我不确定这是否甚至是问题,或者我应该去解决这个问题。 – Rosemary 2012-02-01 16:50:21

0
$(document).ready(function() { 
    $.ajaxSetup({ cache: false }); 
}); 

试试这个从limk

相关问题