AJAX Post不发送数据?

时间:2010-05-19 19:59:04

标签: php ajax post

我不能为我的生活弄清楚为什么会这样。

这是一种转贴,请原谅我,但我有新的数据。

我正在运行一个名为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

3 个答案:

答案 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标头,以了解这些参数是否已正确发送。