关于ajax的问题

今天 学了一点ajax 遇到了很多问题 ,现总结如下:

1 .  xmlHttp.open() 里参数为true 与false的选择  true 就是异步处理 false 就是同步处理 就是当客户端请求服务时 不管服务器端是否处理完毕 就返回响应值这是异步 反之 就是同步. 

2.关于我的status 值一直为0 的问题  首先 有两种可能 一种是你的网页是在本地浏览的 导致为0 还有一种就是 你的提交按钮时 submit 使得找不到了。

3. 判断state 后还要判断status 否则就会出现2的问题

4.我出现的responseText一直弹出为空就是 2 的问题 

下面是我的登录完整代码

 login.html

<!DOCTYPE html>
<html>
<head>
         <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>管理员登录</title>
<link rel="stylesheet" href="css/LoginCss.css" type="text/css" media="screen" charset="utf-8"> 
<script>
function getxmlHttpRequest()
{
  var xmlHttp=null;
if (window.XMLHttpRequest)
  {// code for IE7, Firefox, Mozilla, etc.
  xmlHttp=new XMLHttpRequest();
  }
else if (window.ActiveXObject)
  {// code for IE5, IE6
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 if(xmlHttp==null)
  {
   alert("Your browser does not support XMLHTTP.");
      
      }
return xmlHttp;
}
 var xmlHttp=getxmlHttpRequest();  
function AjaxRequst()
{
var username=document.getElementById('username').value;
var password=document.getElementById('psw').value;
sendRequest('login.php',call_back,'username='+username+'&password='+password);
}
function sendRequest(url,call_back,data)
{
  var data=data || "";
  xmlHttp.onreadystatechange=call_back;//onreadystatechange 在发生前和发生后都会触发,要根据 readyState 判断当前状态(只有在 readyState == 4 时才是发送完)
  if(data!="")
  {
    xmlHttp.open("post",url,true);
    xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
     xmlHttp.setRequestHeader("Content-length",data.length);
    xmlHttp.setRequestHeader("Connection","close");
    
  }else{
  
     xmlHttp.open("get",url,true);
     
    }
  xmlHttp.send(data);


}


function call_back()
{


  if(xmlHttp.readyState==4)
  {
    if(xmlHttp.status==200)
    {
    var res=xmlHttp.responseText;
    alert(res);}
     
    
  }


}

</script>

</head>


<body>

           <form   method="post" >
                <span>管理员登录</span>   
        用户名:<input type="text" name="username" value="" id="username"><br/><br/>
        密码:<input type="password" name="password" value="" id="psw"><br/><br/>
       
        <input type="button" value="登录" class="button"  οnclick="AjaxRequst()">
     </form>
    
  
</body>
</html>

login.php

<?php
header("Content-type:text/html;charset=utf-8");
if($_POST['username']=='php'&& $_POST['password']=='123')
{
 echo ("hello");


}else{
echo ("用户名或密码错误");
}


?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解决ajax跨域问题有多种方法,以下是几种常用的解决方案: 1. 服务器端设置响应头:服务器端可以设置响应头,允许特定的域名进行跨域访问。在服务器端的响应中,添加Access-Control-Allow-Origin字段,并设置为允许访问的域名。例如,可以设置为"*"表示允许所有域名进行访问。这样就能解决跨域问题。 2. JSONP(JSON with Padding):JSONP是一种利用script标签进行跨域请求的方法。它通过在页面中动态创建一个script标签,并指定src属性为目标服务器的接口地址,同时传递一个回调函数的名称作为参数。服务器端在返回数据时,将数据作为参数传递给回调函数,并在页面中执行该回调函数,从而实现跨域请求。 3. 使用代理服务器:可以通过在同一域名下搭建一个代理服务器,将跨域请求发送到代理服务器上,再由代理服务器转发请求到目标服务器。这样就能避免浏览器的同源策略限制,实现跨域请求。 4. CORS(Cross-Origin Resource Sharing):CORS是一种新的标准,通过在服务器端设置响应头来实现跨域请求。服务器在响应中添加Access-Control-Allow-Origin字段,并设置允许访问的域名,浏览器在发送请求时会自动检查响应头,如果允许跨域访问,则请求会成功。 总结:以上是几种常用的解决ajax跨域问题的方法,可以根据自己的需求选择合适的解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ajax跨域问题及解决方案](https://blog.csdn.net/qingqingxiangyang/article/details/104514704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [完美解决AJAX跨域问题](https://download.csdn.net/download/weixin_38732315/14824435)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值