我不能为我的生活弄清楚为什么会这样。
这是一种转贴,请原谅我,但我有新的数据。
我正在运行一个名为logOut()的javascript注销函数,它已经对php脚本进行了jQuery ajax调用...
function logOut(){
var data = new Object;
data.log_out = true;
$.ajax({
type: 'POST',
url: 'http://www.mydomain.com/functions.php',
data: data,
success: function() {
alert('done');
}
});
}
它调用的php函数在这里:
if(isset($_POST['log_out'])){
$query = "INSERT INTO `token_manager` (`ip_address`) VALUES('logOutSuccess')";
$connection->runQuery($query); // <-- my own database class...
// omitted code that clears session etc...
die();
}
现在,有一天工作18小时,但由于某种原因,每隔一段时间,POST数据就不会触发我的查询。 (这将持续约一个小时左右)。 我想通过在我的脚本末尾添加这个来设置帖子数据......
$query = "INSERT INTO `token_manager` (`ip_address`) VALUES('POST FAIL')";
$connection->runQuery($query);
所以,现在我知道我的注销功能正在被跳过,因为在我的数据库中有以下数据:
alt text http://img535.imageshack.us/img535/2025/screenshot20100519at125h.png
如果没有被跳过,我的数据会显示如下:
alt text http://img25.imageshack.us/img25/8104/screenshot20100519at125.png
我知道它被跳过了两个原因,一个是我的第一个函数结束时的die(),另外两个,如果成功,则会在表中注册“logOutSuccess”。
有什么想法?一位朋友说这是一家虚张声势的托管公司(hostgator.com)。我个人喜欢他们,因为他们便宜而且我是cpanel的粉丝。但是,如果是这样的话???
提前致谢。
-J
答案 0 :(得分:4)
好的,对那些感兴趣的人。
我删除了完整的网址http://www.mydomain.com/functions.php 并用本地路径functions.php替换它,这就是诀窍。
显然AJAX存在跨域ajax调用的问题,而且我不在专用服务器上,所以我想发生的事情是每隔几个小时(或几分钟)我从某个不同的位置点击我的脚本导致AJAX解雇POST数据。
-J
答案 1 :(得分:0)
尝试在jquery $ .ajax函数上启用错误报告,您的代码看起来像
function logOut(){
var data = new Object;
data.log_out = true;
$.ajax({
type: 'POST',
url: 'http://www.mydomain.com/functions.php',
data: data,
success: function() {
alert('done');
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus+" - "+errorThrown);
}
});
}
看看是否能说明你的情况。
答案 2 :(得分:0)
我有一种强烈的感觉,它更多的是服务器端问题而不是客户端问题。
奇怪的是你在一段时间内看到了这个问题。如果客户端工作,那么至少刷新页面或重新启动浏览器应该修复它。
函数末尾的die()是可疑的,但我不太确定它会如何影响它。
顺便说一句,您可以在FireBug的“网络”标签中看到http标头,以了解这些参数是否已正确发送。