在AJAX之后调用PHP函数
当用户在我的页面上提交表单时,我使用AJAX提交信息而不刷新页面。 在用户提交信息之后,我想运行一个我已编写的PHP函数来显示信息。 这是可能的还是我需要运行另一个ajax函数来更新之后
$(function () { $('add').on('submit', function (e) { $.ajax({ type: 'post', url: 'submit.php', data: $('this').serialize(), success: function () { alert('form was submitted'); } }); e.preventDefault(); updateWords(); //PHP FUNCTION }); });
您需要在第一个成功时运行另一个AJAX调用。
JavaScript无法直接与PHP交互,因此您无法从AJAX调用的success / complete函数调用PHP函数。
对此作出回应。
我在页面上有多个表单,可能有5个不同的ajax调用,其中不会同时调用2个,如果json更好,你有一些链接到一些阅读材料或类似于此的额外堆栈示例,所以我可以教我自己 – user934902
首先
jquery是为旧浏览器而制作的,以支持ie6不支持的基本function
如果你想在几乎所有浏览器上获得完全支持,那么使用jquery是很好的
但也有许多不好的方面:
- 它的81kb代码是疯了(没有插件)
- 与原生function相比,它非常慢。
- 它是由ppl使用的,他们不知道如何编写简单的javascript。
- 如果我们开始谈论插件,还有更多。
现在我们处在这样一个时代,大多数人都使用他们的移动设备和现代浏览器,支持标准的javascript 1.7.Android,ios,safari,Internet Explorer 10,chrome,opera和firefox支持javascript 1.7
这些浏览器支持下面的代码。
这是一个由我编写的ajax函数,它处理post和get
你可以在这里阅读更多关于该function的信息https://stackoverflow.com/a/18309057/2450730
function ajax(a,b,e,d,f,g,c){ c=new XMLHttpRequest; !f||(c.upload.onprogress=f); !g||(c.onprogress=g); c.onload=b; c.open(e||'get',a); c.send(d||null) } // Params: // Url,callback,method,formdata or {key:val},uploadFunc,downloadFunc,placeholder
一个简单的获取请求将是
ajax('example.php',responseFunction);
一个复杂的岗位function将是
ajax('example.php',responseFunction,'post',new FormData(form),uploadFunc,dlFunc);
你需要那个。
所以,如果你有你的表格
你只需要写一个这样的函数
var form=document.getElementsById('myForm'); form.onsubmit=function(e){ e.preventDefault(); ajax('submit.php',SUCCESS,'post',new FormData(this)); }
在这里,我们来看你的问题:
根据您的需要创建submit.php文件
$_POST,'files'=>$_FILES,'info'=>$extrainfo,'errors'=>$err); echo json_encode($data); ?>
这将返回一个json编码的数组,以便稍后在javascript中使用。
现在我们需要详细说明这个json。 在SUCCESSfunction中
function SUCCESS(){ var data=JSON.parse(this.response); if(data.errors.length>0){ // you have some errors }else{ // no errors // display your response in a proper way. console.log(data); } }
在此function中,您只需根据响应数据进行显示。
data
包含您需要的一切。
这是整个代码。
复制并过去到txt文件并将其保存为submit.php
。 我现在只测试过chrome。
$_POST,'files'=>$_FILES,'info'=>$extrainfo,'errors'=>$err); echo json_encode($data); }else{ ?> upload
如果该函数依赖于对submit.php
整理的AJAX调用,则创建一个新的AJAX调用。 如果没有,那么只需将函数附加到submit.php并在文件末尾调用它。
您应该使用执行更新信息的ajax函数同时更新页面本身。
只需返回可用的HTML作为ajax的返回值,并将其用作页面的HTML内容。
示例:test.php
PHP是服务器端,javascript是客户端。 如果页面已经加载,你不能从客户端调用php。
所以简单的方法是ajax
在submit.php中添加:
echo json_encode($_POST);
或者
我已经写过的PHP函数
……你需要的信息。
并在成功function
success: function () { // i don't use jquery but the response contains the json string console.log('the words you wanna update:',JSON.parse(response)); // updateWords(JSON.parse(response)); }
编辑
你也不需要多个ajax函数
你说你已经编写了一个脚本来向客户端显示下一个信息。
将该脚本添加到submit.php
并且成功function将为您提供所需的响应。
我添加了echo json_encode($_POST);
因为大多数时候你需要的答案/更新信息就是你刚发布的那个。