phpajax下载
‘壹’ php ajax题目(对我来说很难),求大神
<?php
if(isset($_GET['ucode'])){
session_start();
if($_GET['ucode']==$_SESSION['code']){
exit('OK');
}else{
exit('NO');
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>
<body>
<input type="text" id="ucode" oninput="check()"/>
<img id="code" src="code.php" onclick="this.src='code.php?v='+Math.random()"/>
<img id="f" src="error.png"/>
<script>
function check(){
var ucode=document.getElementById('ucode').value;
if(ucode){
var f=document.getElementById('f');
var xmlhttp=new window.XMLHttpRequest();
xmlhttp.open('GET','usecode.php?ucode='+ucode,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
if(xmlhttp.responseText=='OK'){
f.src='right.png';
}else{
f.src='error.png';
}
}
}
}
}
</script>
</body>
</html>
‘贰’ thinkphp中 ajaxReturn方法的使用及弹出提示对话框
你的意思是ajax提交页面参数,信息不完善就提示,完善了就转到下载页面?
这样的话,思路可以如下:
当前页面提交到后台function a(),也就是你写的代码那里,但是最后加上一句,假如通过了验证,那就把下载地址function b()返回
简要代码:
function a()
$fail=false;
for($i=0;$i<count($num);$i++){
if(empty($_POST["recontrol_$i"])orempty($_POST["recheck_$i"])orempty($_POST["rerisk_$i"])){
$fail=true;
break;
}
}
if($fail)
$this->ajaxReturn(0,'你有未完成的选项',0);//状态0表示失败
else
$this->ajaxReturn(0,'填写你的下载地址URL...',1);//1表示成功,可以跳转到下载
当前页面的ajax提交简要代码
$.post(提交地址,提交内容,function(json){
vardata=eval("("+json+")");
if(data.status==0)
alert(data.info);
else
window.location.href=data.info;
}
‘叁’ php如何获取jquery ajax传递过来的值
方法和详细的操作步骤如下:
1、第一步,安装并配置PHP集成环境,以phpstudy为例,见下图,转到下面的步骤。
‘肆’ (php ajax)页面中的一个排行榜有分页功能,点击下一页实现排行榜局部刷新,怎么实现
可以把分页显示的那个模块用<iframe>标签,这样只会局部刷新分页点击下一页显示的地方保持其他地方不变。
‘伍’ thinkphp中怎么用ajax
thinkphp中使用ajax很简单.主要掌握的地方有三个.
第一.tp中ajax的url需要使用大U方法.比如:$.post("{:U('User/add')}")
第二.控制器中返回结果得第一种方法.$this->error('失败','',true); 第三个参数为true.则发挥的是json数据.包含info.status.url三项.
第三.控制器中返回结果的第二种方法.$this->ajaxReturn(array('customKey1'=>'customValue1','customKey2'=>'customValue2','customKey3'=>'customValue3')).
掌握以上三点和ajax基本使用方法.那么在tp中使用ajax也就掌握了.简单的例子如下.伪代码,或许有错.
模板中:
<script>
$.post("{:U('User/add')",{uname:xiaoming,age:15},function(data){
//data接收返回数据
if(data.status==1){
alert(data.info);
location.href=data.url;
}else{
alert('错误');
}
});
</script>
控制器中:
publicfunctionadd(){
if(IS_AJAX){
$name=I('post.name','','trim');
$age=I('post.age','','trim');
if($name&&$age){
//插入数据
$this->success('添加成功',U('User/index'),true);
}else{
$this->ajaxReturn(array(
'status'=>0,
'info'=>'大爷,您没输入名字',
'url'=>U('User/add')
));
}
}else{
returnfalse;
}
}
大概就是这样子.至于剩下的$.ajax.$.getJson等等都是一样的道理
‘陆’ PHP 如何用ajax做文件上传
通过传统的form表单提交的方式上传文件:
[html] view plain 在CODE上查看代码片派生到我的代码片<form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data">
<h1 >测试通过Rest接口上传文件 </h1>
<p >指定文件名: <input type ="text" name="filename" /></p>
<p >上传文件: <input type ="file" name="file" /></p>
<p >关键字1: <input type ="text" name="keyword" /></p>
<p >关键字2: <input type ="text" name="keyword" /></p>
<p >关键字3: <input type ="text" name="keyword" /></p>
<input type ="submit" value="上传"/>
</form>
不过传统的form表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用Ajax的方式进行请求的。
Ajax的方式进行请求:
[javascript] view plain 在CODE上查看代码片派生到我的代码片$.ajax({
url : "http://localhost:8080/STS/rest/user",type : "POST",
data : $( '#postForm').serialize(),
success : function(data) {
$( '#serverResponse').html(data);
},
error : function(data) {
$( '#serverResponse').html(data.status + " : " + data.statusText + " : " + data.responseText);}
});
通常我们提交(使用submit button)时,会把form中的所有表格元素的name与value组成一个queryString,提交到后台。这用jQuery的方法来说,就是serialize。
通过$('#postForm').serialize()可以对form表单进行序列化,从而将form表单中的所有参数传递到服务端。
但是上述方式,只能传递一般的参数,上传文件的文件流是无法被序列化并传递的。
不过如今主流浏览器都开始支持一个叫做FormData的对象,有了这个FormData,我们就可以轻松地使用Ajax方式进行文件上传了。
关于FormData及其用法
FormData是什么呢?我们来看看Mozilla上的介绍。
XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的send()方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件.
所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。
参见:https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/FormDataConstructor
FormData()
想得到一个FormData对象:
var formdata = new FormData();
W3c草案提供了三种方案来获取或修改FormData。
方案1:创建一个空的FormData对象,然后再用append方法逐个添加键值对:
var formdata = new FormData();
formdata.append("name", "呵呵");
formdata.append("url", "http://www..com/");方案2:取得form元素对象,将它作为参数传入FormData对象中!
var formobj = document.getElementById("form");var formdata = new FormData(formobj);
方案3:利用form元素对象的getFormData方法生成它!
var formobj = document.getElementById("form");var formdata = formobj.getFormData()
Method
FormData.append
本方法用于向已存在的键添加新的值,如该键不存在,新建之。
语法
formData.append(name, value);
formData.append(name, value, filename);
注: 通过 FormData.append()方法赋给字段的值若是数字会被自动转换为字符(字段的值可以是一个Blob对象,一个File对象,或者一个字符串,剩下其他类型的值都会被自动转换成字符串).
参数解释
name
键 (key), 对应表单域
value
表单域的值
filename (optional)
The filename reported to the server (a USVString), when a Blob or File is passed as the second parameter. The default filename for Blob objects is "blob".
FormData.delete
将一对键和值从 FormData 对象中删除。
formData.delete(username);
FormData.get
返回给定键的第一个值
formData.append('username', 'Justin');
formData.append('username', 'Chris');
formData.get(username); // "Justin"
FormData.getAll
返回给定键的所有值
formData.append('username', 'Justin');
formData.append('username', 'Chris');
formData.getAll(username); // ["Justin", "Chris"]
FormData.has
检查是否包含给定键,返回 true 或 false
formData.has(username);
FormData.set
设置给定键的值
formData.set(name, value);
formData.set(name, value, filename);
浏览器兼容情况
来自 MDN:
Desktop
FeatureChromeFirfox(Gecko)Intenet ExplorerOperaSafariBasic support7+4.0(2.0)10+12+5+
append with filename(Yes)22.0(22.0)???
delete, get, getAll, has, setBehind FlagNot supportedNot supported(Yes)Not supportedMobile
FeatureAndroidChrome AndroidFirfox Mobile (Gecko)Firfox OS (Gecko)IE MobileOpera MobileSafari MobileBasic support3.0?4.0(2.0)1.0.1?12+?
append with filename??22.0(22.0)1.2???
delete, get, getAll, has, set(Yes)(Yes)Not supportedNot supportedNot supported(Yes)Not supported2015年06月04日发布
Ajax通过FormData上传文件
1.使用<form>表单初始化FormData对象方式上传文件HTML代码
<form id="uploadForm" enctype="multipart/form-data">
<input id="file" type="file" name="file"/>
<button id="upload" type="button">upload</button>
</form>
javascript代码
$.ajax({
url: '/upload',
type: 'POST',
cache: false,
data: new FormData($('#uploadForm')[0]),
processData: false,
contentType: false
}).done(function(res) {
}).fail(function(res) {});
这里要注意几点:
processData设置为false。因为data值是FormData对象,不需要对数据做处理。
<form>标签添加enctype="multipart/form-data"属性。
cache设置为false,上传文件不需要缓存。
contentType设置为false,不设置contentType值,因为是由<form>表单构造的FormData对象,且已经声明了属性enctype="multipart/form-data",所以这里设置为false。
上传后,服务器端代码需要使用从查询参数名为file获取文件输入流对象,因为<input>中声明的是name="file"。
如果不是用<form>表单构造FormData对象又该怎么做呢?
2.使用FormData对象添加字段方式上传文件
HTML代码
<div id="uploadForm">
<input id="file" type="file"/>
<button id="upload" type="button">upload</button>
</div>
这里没有<form>标签,也没有enctype="multipart/form-data"属性。
javascript代码
var formData = new FormData();
formData.append('file', $('#file')[0].files[0]);$.ajax({
url: '/upload',
type: 'POST',
cache: false,
data: formData,
processData: false,
contentType: false
}).done(function(res) {
}).fail(function(res) {});
这里有几处不一样:
append()的第二个参数应是文件对象,即$('#file')[0].files[0]。
contentType也要设置为‘false’。
从代码$('#file')[0].files[0]中可以看到一个<input type="file">标签能够上传多个文件,只需要在<input type="file">里添加multiple或multiple="multiple"属性。
3.服务器端读文件
从Servlet 3.0 开始,可以通过 request.getPart() 或 request.getPars() 两个接口获取上传的文件。
‘柒’ php ajax函数如何记录时间
前端代码:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
<title>动态显示时间</title>
</head>
<scriptlanguage="javascript">
varxmlHttp;
functioncreateXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp=newActiveXObject("microsoft.XMLHTTP");
}
elseif(window.XMLHttpRequest){
xmlHttp=newXMLHttpRequest();
}
else{
alert("创建请求失败");
}
}
functionsendRequest(){
createXMLHttpRequest();
url="time_check.php";
xmlHttp.onreadystatechange=callback;
xmlHttp.open('GET',url,true);
xmlHttp.send(null);
}
functioncallback(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200){
document.getElementById("time").innerHTML=xmlHttp.responseText;
setTimeout("sendRequest()",1000);
}
}
}
</script>
<body>
<inputtype="button"value="checkit"onclick="sendRequest();"/>
<br/>
<spanid="time"></span>
</body>
</html>
后台php代码:
<?php
header("cache-control:no-cache,must-revalidate");//取消php页面缓存的设置
header('Content-type:text/html;charset=GB2312');
$showtime=date("北京时间Y年m月d日H:i:s");
echo$showtime;
?>
‘捌’ vscode中如何用ajax请求php文件
安装插件php-debug。
找到xampp安装目录下的readme_en.txt文件,查看php的具体版本PHP 5.6.30 (VC11 X86 32bit thread safe) + PEAR。
在xdebug下载php对应版本的插件。PHP 5.6 VC11 TS (32 bit) (SHA256: )
将下载的php_xdebug-2.5.4-5.6-vc11.dll拷贝到C:\xampp\php\ext目录。
返回上级目录,即C:\xampp\php,找到php.ini,按照下面的列表配置,配置完成后重启apache。
修改最大执行时间为5分钟 max_execution_time=3000
末尾添加
[XDebug]zend_extension = "C:\xampp\php\ext\php_xdebug-2.5.4-5.6-vc11.dll" xdebug.remote_enable =1xdebug.remote_autostart = 1
vscode``用户设置添加"php.validate.executablePath": "C:\\xampp\\php\\php.exe"。
php文件设置断点,手动打开网页上对应的页面即可。
‘玖’ ajax与PHP
所谓的异步,就是一部分内容先提交,然后有内容来处理从服务器放回的数据,而整体页面不进行更改,js处理页面的数据,而php处理后台的数据处理,两者相互结合,形成了Ajax,当然,后台处理程序俺,可以使用任何后台处理,比如jsp,asp,aspx,php等
‘拾’ php+ajax实现动态调用数据库并显示成幻灯片效果
回答:
综合思路:
1. 大概了解了一下你希望得到的效果,而且也正是我这一周正在攻关的问题,并已经完成最终测试。
2. ajax从另一个php页面得到图片地址(以text形式得到,形式以ul/li的html代码格式在该php页面中形成并显示)。
3. 在index.php文件的html代码部分建立一个隐藏div块,用以暂放第二条得到的数据。
4. 使用javascript实现图片轮播效果,并设计一个显示界面,在下方按照图片轮播的情况动态显示图片介绍(忘了说,这个图片介绍可在第二条的那个php文件中放入图片的alt属性之中。)
6. 和第四条相配合,在html代码部分加入一个div块,用以显示轮播图片和文字介绍以及控制按钮,并为其设置id属性,供javascript使用。
7. 至于需要多么强悍或炫丽的特效,都可以使用js进行编制,前提是您需要对js有一个基本甚至效好的理解和应用能力。
8. 期间还要有图片转入动画的制作和放置,不过这也只是特效的一部分,如果你希望得到代码,到时候网络hi我,我可以将我的代码供你参考,不过这套代码我暂时还不想公开,你需要的话单独联系。望谅解。
===========================================
至于php正则类?如果没有大量的正则替换工作需要进行的话,最好自己编写,因为所谓的类都会在一定程序上拉低整体程序性能,(其实是我不喜欢使用,也没有去了解过,正则都是自己来用php函数写的。)
=============================
最后,工作顺意,才思泉涌!