本文目录一览:
- 1、PHP如何判断一个请求是否来源于本域并且是ajax请求?
- 2、关于AJAX的执行状态判断
- 3、php ajax验证用户名是否存在
- 4、PHP如何判断是否为AJAX请求
- 5、thinkphp怎样获取ajax请求数据
- 6、thinkphp 验证是不是ajax提交
PHP如何判断一个请求是否来源于本域并且是ajax请求?
通过请求头的Referer属性可以获取来源,X-Requested-With属性(不代表ajax一定需要这个请求头属性)可以判断是否是ajax。但是请求头这种东西,也知道的,很容易伪造。如果仅仅是做业务上的判断,请求头就够了。
关于AJAX的执行状态判断
首先声明一下,我不是做php的,但是这种情况在java里面也会遇到,你可以参照一下,我目前采取的办法如下:
1、如果a.php处理的是全局不变的内容,则使用静态化方式将a.php的内容转换成*.html,在多次调用时,先判断转换成的文件是否存在,如果不存在进行生成,否则直接调用;
2、如果a.php处理的内容时需要定期刷新的,则使用timer组件进行定时作业,其他部分采取与第一种相同方式即可;
3、在判定是否执行时,可采用static变量进行锁定。
php ajax验证用户名是否存在
$("button").click(function(){
$.get("ajax_login.php",{username:'testname'}, function(result){
if(result){ //判断已经存在
alert('用户名已经存在');
}else{
alert('可以注册');
}
});
});
给你一个js端,可以结合楼上 勰莫莫 的服务端一起用
PHP如何判断是否为AJAX请求
span style="font-size:18px;"/**
* 是否AJAX请求
* @access protected
* @return bool
*/
protected function isAjax() {
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) ) {
if('xmlhttprequest' == strtolower($_SERVER['HTTP_X_REQUESTED_WITH']))
return true;
}
if(!empty($_POST[C('VAR_AJAX_SUBMIT')]) || !empty($_GET[C('VAR_AJAX_SUBMIT')]))
// 判断Ajax方式提交
return true;
return false;
}/span
thinkphp怎样获取ajax请求数据
一般将前台页面搜索结果中,不喜欢的内容(链接),删除掉,因为整个网站的编程框架式thinkphp,运用js中的ajax对页面进行响应,调用后台php接口,实现前台和后台数据库的同时更新.
首先我们需要做的就是在前台页面中添加一个文本“删除”,可以这么添加:
代码如下:
a href="javascript:void(0);" id= "phpecho $val[id]/php" class="delete" 删除/a
上面的html代码的意思:就是给删除添加一个href,这个href是个js函数,类似于超链接的作用,当然对于我这样的新手在刚开始的时候会有疑惑,我们平时的超链接不是这样的,网页中很多的javascript:void(0),那程序怎么知道用户点击删除后,会响应其真正对应的js函数呢?别急,这就是为什么会为删除添加id以及class这样的标签,相信我把js中的代码公布出来以后你就会明白了,代码如下:-php判断是否ajax
jQuery(".list a.delete").click(function(){
if(confirm("你确定要删除吗?")){
var _this=this;
var id = jQuery(_this).attr("id");
jQuery.ajax({
url : '/Search/index.php/Jason/delete?',
data : {'id':id},
dataType : 'json',
success : function(data){
var del = data.del;
if(del == 1){//删除成功
jQuery("#"+id).parents(".list").remove();
}else{//删除失败
alert("删除失败");
}
}
});
}
});
大家看函数的头部:jQuery(".list a.delete").click(),jQuery后面的标签是很重要的,这就保证了jquery很准确的响应页面中用户点击的“位置”,添加的事件为click(),在click里添加响应事件的代码:var id = jQuery(_this).attr("id");获取a对应的id,因为这个id是我们删除数据库时用到的链接id,当然这种直接明文的方式不好,在这里只是介绍整个响应过程。调用ajax,实现异步的运行整个过程。我们设置了js接受的是json串,这里的方式应该有很多种吧,我没有去尝试,大家要是有兴趣可以自行尝试一下。/Search/index.php/Jason/delete?这句话就是js去请求php的接口,php接口对用的代码如下:-php判断是否ajax
注意ajax在求php接口时的路径,也就是delete函数必须放在JasonAction.class.php中,此例子是必须这样的:
代码如下:
public function delete(){
if($this-isGet()){
$userId = session("uid");//用户登录
if(!empty($userId)){
$a = M('***');
$id = $this-_get('id');
$result=$a-where("id=$id")-delete();//删除
if($result 0){
$arr = array("del"='1');
}else{
$arr = array("del"='0');
}
$json_str = json_encode($arr);
echo $json_str;//返回给js
}
}
}
相信大家对上面的代码不会陌生吧,整个过程都是thinkphp框架内部配置完毕的.
var del = data.del;这句是接受php代码返回来的json串中del这个key的value,进而在前台进行页面更新和响应.
复制代码代码如下:
if(del == 1){//删除成功
jQuery("#"+id).parents(".list").remove();//这句话就是后台删除成功后,直接在前台对响应的div进行删除,这样性能就会很快,无需进行后台数据的重新提取至前台页面中, -php判断是否ajax
}else{//删除失败
alert("删除失败");
}
整个响应的过程就是这样,至于效果优化,是优化和细化方面的问题,后来,身边的同事又告诉我前台移除响应链接的另一个动态效果:
即将:
代码如下:
jQuery("#"+id).parents(".list").remove();
替换为:
代码如下:
jQuery("#"+id).parents(".list").slideUp("slow", function(){
jQuery(this).remove();
});
thinkphp 验证是不是ajax提交
有两种方式,如下:
第一种方式:
PHP判断ajax请求的原理:
在发送ajax请求的时候,我们可以通过XMLHttpRequest这个对象,创建自定义的header头信息, 在jquery框架中,对于通过它的$.ajax, $.get, or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER['HTTP_X_REQUESTED_WITH']判断。-php判断是否ajax
/**
* 当前请求是否ajax请求
*
* @access public
* @return bool
*/
function isAjax()
{
return isset($_SERVER['HTTP_X_REQUESTED_WITH']);
}
注意:
● 一般情况下$_SERVER['HTTP_X_REQUESTED_WITH']默认是XMLHttpRequest
● $_SERVER['HTTP_X_REQUESTED_WITH']也可以自定义创建的,使用XMLHttpRequest.setRequestHeader(name,value);参考文章:
第二种方式:
通过前台给php传一个type参数来判断,type=1则是ajax,否则是普通提交。