博客列表 >12月25日_ JQuery里的ajax提交 - 九期线上班

12月25日_ JQuery里的ajax提交 - 九期线上班

只猫
只猫原创
2020年01月02日 16:17:45659浏览

JQuery中的ajax

form表单默认提交方式为get
客户端请求 服务器 响应 包含 响应头响应体

使用ajax提交就不让form提交 取消form的提交属性action和method 。把button改为type=”button” 。

异步请求,不刷新当前页面的情况下把数据提交到服务端。

$.post和$.get 这二者最为常用

习惯用于$.post()提交数据 $.get()获取数据

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>ajax</title>
  6. <script src="jquery.js"></script>
  7. </head>
  8. <body>
  9. <form>
  10. <div>
  11. <label for="username">用户:</label>
  12. <input type="text" name="username" placeholder="请输入用户名">
  13. </div>
  14. <div>
  15. <label for="pwd">密码:</label>
  16. <input type="password" name="pwd" placeholder="请输入用密码">
  17. </div>
  18. <button type="button" onclick="login1()">登陆post</button>
  19. <button type="button" onclick="login2()">登陆get</button>
  20. <div class="std"></div>
  21. </form>
  22. <script type="text/javascript">
  23. function login1() {
  24. var username = $.trim($('input[name="username"]').val());
  25. var pwd = $.trim($('input[name="pwd"]').val());
  26. //jQuery.post( url [, data ] [, success ] [, dataType ] )
  27. //4个参数
  28. //1.提交地址(当前地址,相对地址)
  29. //2.提交数据(字符串或者对象)
  30. //3.回调函数
  31. //4.响应 数据解析类型
  32. $.post('login.php',{name:username,pass:pwd},
  33. function(res){
  34. console.log(res.msg);
  35. if(res.code==0){
  36. alert(res.msg);
  37. window.location.href = "home.php";
  38. }
  39. },'json');
  40. }
  41. //get方式 提交数据(大小有限)
  42. //jQuery.get( url [, data ] [, success ] [, dataType ] )
  43. function login2(){
  44. var username = $.trim($('input[name="username"]').val());
  45. var pwd = $.trim($('input[name="pwd"]').val());
  46. $.get('login.php',{name:username,pass:pwd},function(res){
  47. console.log(res.msg);
  48. if(res.code==0){
  49. alert(res.msg);
  50. window.location.href = "home.php";
  51. }
  52. },'json');
  53. }
  54. //get方式获取数据
  55. $.post('home.php',function(res){
  56. var html = '';
  57. $.each(res.data,function(i,v){
  58. html+='<p>学号:'+v.sno+'===姓名:'+v.name+'</p>';
  59. $('div[class="std"]').html(html);
  60. });
  61. },'json');
  62. </script>
  63. </body>
  64. </html>

login.php

  1. <?php
  2. $method = $_SERVER['REQUEST_METHOD'];
  3. if($method=='GET'){
  4. $username = $_GET['name'];
  5. $password = $_GET['pass'];
  6. }else{
  7. $username = $_POST['name'];
  8. $password = $_POST['pass'];
  9. }
  10. //状态码code 消息msg 数据data
  11. if($username!='admin'){
  12. $data = json_encode(array('code'=>1,'msg'=>'用户名错误'));
  13. exit($data);
  14. }
  15. if($password!='1234'){
  16. $data = json_encode(array('code'=>1,'msg'=>'密码错误!'));
  17. exit($data);
  18. }
  19. $data = json_encode(array('code'=>0,'msg'=>'登陆成功'));
  20. exit($data);

home.php

  1. <?php
  2. // echo 'home';
  3. $person = [
  4. [
  5. 'id'=>1,
  6. 'name'=>'小明',
  7. 'sno'=>'00001',
  8. ],
  9. [
  10. 'id'=>2,
  11. 'name'=>'小六',
  12. 'sno'=>'12345',
  13. ],
  14. [
  15. 'id'=>3,
  16. 'name'=>'张三',
  17. 'sno'=>'00003',
  18. ],
  19. ];
  20. $data = json_encode(
  21. array(
  22. 'code'=>0,
  23. 'msg'=>'success',
  24. 'data'=>$person,
  25. ));
  26. exit($data);

总结:在使用$.get()获取home.php页面的数据时,感觉踩了坑,回调函数里console.log()输出不了东西,但是network里面数据正常,我开始以为回调里没法显示在console,不对啊,老师视频里就可以打印出来。发现是我的回调没执行,我又把数据放到login.php去请求login.php,结果可以打印,我就以为难道一个html页面里只能调用一个php?想想也不可能啊。。最后发现是我在home页面开头echo了个home导致。echo是可以打断控制台输出的是吗?新手写代码太难了,脑子里的想法真奇奇怪怪。
JQuery的方法不去用会忘的很快,学完一遍只是理解了,根本不是记住了,更不等于灵活运用。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议