AJAX拉不是真正拉最新的代码

时间:2014-02-26 20:54:35

标签: ajax coldfusion

我有以下代码:

<div id="results">loading image</div>
<script>
function load_url(url) 
{
    var obj;
    if (window.XMLHttpRequest) obj = new XMLHttpRequest();
    else if (window.ActiveXObject) obj = new ActiveXObject("Microsoft.XMLHTTP");

    if (obj !== null) 
    {
        obj.onreadystatechange = function() 
        {
            if (obj.readyState == 4 && obj.status == 200) 
            {
            var response = obj.responseText;
            alert(response);
            document.getElementById('results').innerHTML = response;
            }
        };

        obj.open("GET", url, true);
        obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        obj.send();
    }
}

load_url('_mainpageResults.cfm?tStatus=<cfoutput>#tStatus#&tFinalSort=#tFinalSort#&tDirection=#tDirection#&tSection=#tSection#&tSort=#tSort#</cfoutput>');

</script>

初始加载,虽然很长(我认为这是内部页面的一个因素,查询需要很长时间,但这是一个不同的问题)正确加载。但是,如果我改变某些内容以使其中一个参数不同,则页面不会注册代码更改。

例如,如果通过页面上的下拉菜单将“tStatus”从“Open”更改为“Closed”,它将意识到那里有新代码并运行它。但是,如果我再次将其更改为“打开”,它只会加载旧版本而不会意识到我已经添加了代码。

此外,在可能相关的注释中,返回的渲染表格是不成比例的。

我最初使用<cfdiv>调用此页面,但此处的人员建议不要这样做。这对<cfdiv>工作正常,但我试图让它更清洁。

感谢。

2 个答案:

答案 0 :(得分:2)

IE默认情况下不会缓存Ajax吗?

在jQuery中,我必须这样做:

$.ajaxSetup( {cache: false} );

答案 1 :(得分:1)

尝试这个老技巧。添加随机字符串作为URL参数以避免页面缓存。您可以在页面加载调用中使用CreateUUID()函数,如下所示:

load_url('_mainpageResults.cfm?tStatus=<cfoutput>#tStatus#&tFinalSort=#tFinalSort#&tDirection=#tDirection#&tSection=#tSection#&tSort=#tSort#&rstr=#CreateUUID()#</cfoutput>');

至于你的桌子看起来如何,你没有给我们足够的信息来帮助你。