真正基本的AJAX(PHP,jQuery)

时间:2012-09-11 23:14:00

标签: php jquery ajax

所以我一直在网上挖掘,发现jQuery AJAX解决方案最适合我想做的事。

我发现jquery.ajax()和jquery.post()被提到最多。

然而,我发现的信息非常全面,老实说,我有点迷失了!

我需要创建一个简单的按钮,它将作为切换开关。它需要将数据POST到PHP脚本,该脚本将处理它并返回true或false。该按钮应显示设置,或相应地取消设置。

这是障碍,结果还取决于返回true或false的数据库查找,我需要安全地从$ _SESSION获取信息。由于javascript是客户端,我不热衷于将这些数据输出到用户可以访问的内容中。我的问题是,我可以从“调用的”PHP文件中访问会话,它仍然可以正常工作(如包含?)。

这是我找到的最好的基本代码,但不安全且可能不正确..

$("#mydiv").click(function(){

var button = $(this) ;

if (!button.hasClass('active')) {
    $.post("ajax.php", { user: "2", action: "start" },
        function(data){
           button.addClass('active');
           button.html("End") ;
        }
    );

}
else {
    $.post("ajax.php", { user: "2", action: "stop" },
        function(data){
           button.removeClass('active');
           button.html("Start") ;
        }
    );
}


});

3 个答案:

答案 0 :(得分:1)

您可以在被调用的php脚本中安全地访问$ _SESSION。

我假设您在php脚本上打印是真还是假。在这种情况下,您可能希望在回调函数中添加if语句。数据包含php脚本的返回。

答案 1 :(得分:1)

会话变量将在您调用的php脚本中提供。请注意,$.post() - 函数是异步的,并且有一个回调参数,在您的情况下称为data。此回调变量将存储您在$.post()调用的php脚本中回显的任何内容。

现在,您可以验证内容并做任何您喜欢的事情(顺便说一句,验证应始终发生在您的php文件中,绝不会出现在javascript中,出于安全原因!)。

一个想法是在验证后回显php文件中的"true""false",然后退出php脚本,例如:

<?php
    //validate here and store success in boolean $success
    if($success==true){ echo "true"; exit; }
    else{ echo "false"; exit; }
?>

然后,您的javascript回调参数data的值为"true""false"。您可以像在javascript中的任何其他变量一样访问此变量,并根据其值进行操作。

一种解决方案可能是:

$("#mydiv").click(function(){

    var button = $(this) ;

    if (!button.hasClass('active')) {
        $.post("ajax.php", { user: "2", action: "start" },
            function(data){
                if(data=="true"){
                    button.addClass('active');
                    button.html("End");
                }
            }
        );
    }
    else {
        $.post("ajax.php", { user: "2", action: "stop" },
           function(data){
                if(data=="true"){
                    button.removeClass('active');
                    button.html("Start");
                }
           }
        );
    }


});

这应该可以解决问题。如果您需要返回多个数据点,例如如果是具有属性的对象,请检查JSON

答案 2 :(得分:0)

如果PHP脚本的答案是成功/错误,请考虑使用HTTP标头来表明这一点,例如

失败,渲染:

  

header(“HTTP / 1.0 406 Not Acceptable”);

这使得你的生活在jquery中很容易,因为你可以只为处理成功和错误编写处理程序。

对于Session,它应该工作find,浏览器会在发出AJAX请求时传递会话cookie,PHP会正确加载会话。

您可以使用以下内容修改上面的代码:

$.ajax({
  url: 'http://blarg.com',
  data: { your post data },
  success: function(data) {  do something },
  error: function(o,textStatus) { do Error }
});

查看API以获取更多详细信息:http://api.jquery.com/jQuery.ajax/