2012-08-09 30 views
2

由于某种原因,我无法得到这个工作。我想要做的就是当点击一个按钮时,(通过ajax)执行一个php文件。阿卡,如果我没有使用AJAX,我们会看:基本Ajax与jQuery - 执行PHP文件

<a href="file.php">dfgdfg</a> 

我想要的文件,而无需离开当前页面被执行。

这是我有个大气压:

$(".vote-up").live('click', function(e) { 
$.ajax("file.php", function(){ 
     alert("Executed file"); 
    }); 
}); 

似乎这并不奏效。我真的很困惑,jQuery ajax函数的功能如何,没有处理任何复杂的事情。

新增问题:

.ajax({ 
     url: 'includes/login-check-jquery.php', 
     success: function (data) { 
      if(data == 1){ 
       alert("Logged in!!!"); 
      }else{ 
       window.location = data; 
      } 
     error: function (xhr, status, error) { 
     // executed if something went wrong during call 
     if (xhr.status > 0) alert('Error: ' + status); // status 0 - when load is interrupted 
     } 
    }); 
}); 

在上面的代码中,如果返回的数据“记录在”比出现一个消息框平等。否则,它会重定向到该位置(通过数据发送)。由于某些原因,这个if语句无法正常工作,但数据正按预期返回。

我的PHP代码:

<?php 
if (!$user->logged_in){ 
    echo "../login/index.php"; 
}else{ 
    echo "1"; 
} 

>

任何想法?

+1

尝试用'on'替换'live',因为live已被弃用! 也检查php文件的路径是否正确 – UnLoCo 2012-08-09 02:33:46

+0

这对我来说并不是错误的 - 您是试图从PHP文件获取响应还是只需设置一些内容并忘记它? – 2012-08-09 02:35:10

+0

根本无法工作(也就是说,测试警报也不会触发)。 – Andrew 2012-08-09 02:35:47

回答

5

如果你不想离开页面,做

$(".vote-up").live('click', function(e) { 
    e.preventDefault(); 
    ... 

和AJAX可以更新,如果需要的话

$.ajax({ 
    url: 'file.php', 
    success: function (data) { 
     // this is executed when ajax call finished well 
     alert('content of the executed page: ' + data); 
    }, 
    error: function (xhr, status, error) { 
     // executed if something went wrong during call 
     if (xhr.status > 0) alert('got error: ' + status); // status 0 - when load is interrupted 
    } 
}); 

错误回调一部分可以被删除,如果你去通过引用jquery ajax doc可以增加简单性而不是可用性和更多选项。

+0

我对此有点困惑。数据是一个分配了php文件返回值的变量吗? – Andrew 2012-08-09 03:04:45

+0

从测试它,是的,是这样的。谢谢:)这将工作:) – Andrew 2012-08-09 03:06:49

+0

是的,它是。对不起,没有真正完成阅读快速回复;) – 2012-08-09 03:06:58