Maison > développement back-end > tutoriel php > 使用ajax,xhr却没有响应

使用ajax,xhr却没有响应

WBOY
Libérer: 2016-07-06 13:51:41
original
1448 Les gens l'ont consulté

1.项目中用到了ajax。结果测试时候发现页面在两款浏览器中表现不一:360浏览器可以顺利实现弹窗(alert)效果,火狐浏览器却一点效果全无。但是他们都有一个共同特点:在浏览器的调试模式(F12)的网络选项xhr下没有得出任何的数据,而在网络的全部、html、css、js这些地方都可以看到有数据,包括index首页(POST),其他资源都是以GET获得。
2.使用了ThinkPHP的自动验证功能,错误会自动返回信息,包括没有输入用户名或没有输入密码,但是我没对账号密码进行比对,也不知道为什么在360浏览器中用户名和密码我随便乱输了数据,结果发现一个空白alert对话框出来,也不知道这是什么回事?
3.360浏览器中alert对话框出现的时候,xhr还是有数据的,但是当alert对话框点击确定后,xhr数据就随之消失。
使用ajax,xhr却没有响应
使用ajax,xhr却没有响应

代码如下:
(1)login.js

<code>//前端登录业务类
var login={
  checkUser:function(){
    //获取登录页面中的输入数据
    var userName=$('input[name="username"]').val();
    var userPass=$('input[name="userpass"]').val();
    //使用ajax
    var url="/stfjzd-15/index.php/Home/Index/checkUser";
    var data={"username":userName,"userpass":userPass};
    $.post(url,data,function(result){
      //$("#result").html(data.info).show();
      //$("#result").fadeOut(4000);
      if(result.status){
        alert(result.info);
      }else{
        //alert(2);
        alert(result.info);
      }
    },"json");
  }
}</code>
Copier après la connexion
Copier après la connexion

(2)IndexController.class.php

<code><?php namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
  public function index(){
    $this->display();
  }
  //用户验证
  public function checkUser(){
    //接收变量,默认htmlspecialchars过滤
    $userName=I("post.username");
    $userPass=I("post.userpass");
    $User=D("Stuser");
    //ThinkPHP的自动验证必须使用create()才能启用
    if(!$User->create()){
      return $this->error($User->getError());
      //exit($User->getError());
    }
  }
  //空操作
  public function _empty(){
    echo "页面不存在,请检查您输入的路径是否正确,我要返回<a href="%22._PHP_FILE_.%22" alt="返回首页" title="返回首页">首页</a>";
  }
}</code>
Copier après la connexion
Copier après la connexion

(3)StuserModel.class.php

<code><?php namespace Home\Model;
  use Think\Model;
  //用户表模型
  class StuserModel extends Model{
    //构造函数创建模型
    public function __construct(){
      $this->DB=M("Stuser");
    }
    //ThinkPHP的表单自动验证
    protected $_validate=array(
      array("username","require","用户名不能为空"),
      array("userpass","require","密码不能为空"),
    );

  }
?></code>
Copier après la connexion
Copier après la connexion

回复内容:

1.项目中用到了ajax。结果测试时候发现页面在两款浏览器中表现不一:360浏览器可以顺利实现弹窗(alert)效果,火狐浏览器却一点效果全无。但是他们都有一个共同特点:在浏览器的调试模式(F12)的网络选项xhr下没有得出任何的数据,而在网络的全部、html、css、js这些地方都可以看到有数据,包括index首页(POST),其他资源都是以GET获得。
2.使用了ThinkPHP的自动验证功能,错误会自动返回信息,包括没有输入用户名或没有输入密码,但是我没对账号密码进行比对,也不知道为什么在360浏览器中用户名和密码我随便乱输了数据,结果发现一个空白alert对话框出来,也不知道这是什么回事?
3.360浏览器中alert对话框出现的时候,xhr还是有数据的,但是当alert对话框点击确定后,xhr数据就随之消失。
使用ajax,xhr却没有响应
使用ajax,xhr却没有响应

代码如下:
(1)login.js

<code>//前端登录业务类
var login={
  checkUser:function(){
    //获取登录页面中的输入数据
    var userName=$('input[name="username"]').val();
    var userPass=$('input[name="userpass"]').val();
    //使用ajax
    var url="/stfjzd-15/index.php/Home/Index/checkUser";
    var data={"username":userName,"userpass":userPass};
    $.post(url,data,function(result){
      //$("#result").html(data.info).show();
      //$("#result").fadeOut(4000);
      if(result.status){
        alert(result.info);
      }else{
        //alert(2);
        alert(result.info);
      }
    },"json");
  }
}</code>
Copier après la connexion
Copier après la connexion

(2)IndexController.class.php

<code><?php namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
  public function index(){
    $this->display();
  }
  //用户验证
  public function checkUser(){
    //接收变量,默认htmlspecialchars过滤
    $userName=I("post.username");
    $userPass=I("post.userpass");
    $User=D("Stuser");
    //ThinkPHP的自动验证必须使用create()才能启用
    if(!$User->create()){
      return $this->error($User->getError());
      //exit($User->getError());
    }
  }
  //空操作
  public function _empty(){
    echo "页面不存在,请检查您输入的路径是否正确,我要返回<a href="%22._PHP_FILE_.%22" alt="返回首页" title="返回首页">首页</a>";
  }
}</code>
Copier après la connexion
Copier après la connexion

(3)StuserModel.class.php

<code><?php namespace Home\Model;
  use Think\Model;
  //用户表模型
  class StuserModel extends Model{
    //构造函数创建模型
    public function __construct(){
      $this->DB=M("Stuser");
    }
    //ThinkPHP的表单自动验证
    protected $_validate=array(
      array("username","require","用户名不能为空"),
      array("userpass","require","密码不能为空"),
    );

  }
?></code>
Copier après la connexion
Copier après la connexion

$this->ajaxReturn()或者json_encode试试

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal