所以我一直在网上挖掘,发现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") ;
}
);
}
});
答案 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/