为什么ajax调用缓存表单数据?

时间:2014-09-24 17:47:09

标签: javascript jquery ajax json

以下代码在第一次触发时工作正常,但是如果我需要再次发送(登录失败..)它会重新发送原始表单数据,即使提交了新值...如何重置并重新加载数据..

我已经尝试了很多东西,包括cache:false(可能只适用于GET)和弄乱网址以避免浏览器缓存......到目前为止没有运气。请帮忙; - )

function procLogin() {

    $.ajax({
        type: 'POST',
        url: 'http://www.lalala.com/lalala/auth.php?' + Math.random(),
        crossDomain: true,
        data: $("#loginForm").serialize(),
        dataType: 'json',
        async: false,

        success: function(response) {
            if (response.statusTFD == 'success') {
                alert("Success");
            } else if (response.statusTFD == 'error') {
                alert("Authentication Invalid. Please try again!");
            } else if (response.statusTFD.substring(0, 18) == 'Connection    Failed:' || response.statusTFD.substring(0, 6) == 'Error:') {
                alert(response.statusTFD);
            } else {
                alert("!¤#%¤!#" + response);
            }
        },
        error: function(error) {
            //alert(response.success);
            alert('Could not connect to the database' + error);
        }
    });
    return false;
}

使用onsubmit调用上述内容:

<form id="loginForm" method="POST" onsubmit="procLogin()">

2 个答案:

答案 0 :(得分:0)

在JS中 -

$.ajaxSetup({
        cache: false,
        headers: {
            'Cache-Control': 'no-cache'
        }
    });

在PHP中

header('cache-control: no-cache');

使用两者来避免缓存问题。

答案 1 :(得分:0)

到目前为止,我提出的最佳解决方案是,如果用户/ pw未经过身份验证,则执行location.reload();。在这种情况下,重新加载登录页面,Ajax调用将接收提交的新值而不是原始/缓存的...仍然有兴趣学习代码有什么问题,如果有人有输入..?

感谢您的帮助!