ajax方式发送请求

1、以get方式发送查询字符串

原生:

var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
  if(xhr.readyState==4&&xhr.status==200){
    alert(xhr.responseText);  //xhr.responseText为服务器返回的文本;xhr.response为服务返回的数据,通过xhr.responseType设置数据类型,取值有text、json、blob、arraybuffer,要放在onreadystatechange外。
  }
};
xhr.open("get","server.php?myname=wswh&age=18");
xhr.send();


jQuery

$.ajax({
  type:"get", //可以直接把查询字符串附加到url后
  url:"server.php",
  data:"myname=wswh&age=18", //还可以用{myname:"wswh",age:18}(json对象)
  dataType:"html",  //服务器返回的数据类型,取值有text、html、xml、script、json、jsonp。
  success:function(res){
    alert(res);
  }
});


2、以post方式发送查询字符串

原生

var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
  if(xhr.readyState==4&&xhr.status==200){
    alert(xhr.responseText);
  }
};
xhr.open("post","server.php");
xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
xhr.send("myname=wswh&age=18");


jQuery

$.ajax({
  type:"post", 
  url:"server.php",
  data:"myname=wswh&age=18", //还可以用{myname:"wswh",age:18}(json对象)
  success:function(res){
    alert(res);
  }
});


3、发送json字符串

原生

var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
  if(xhr.readyState==4&&xhr.status==200){
    alert(xhr.responseText);
  }
};
xhr.open("post","server.php");
xhr.send('{"myname":"wswh","age":18}'); //还可以用JSON.stringify({myname:"wswh",age:18})


jQuery(jQuery ajax发送json对象本质属于发送查询字符串)

$.ajax({
  type:"post",
  url:"server.php",
  data:'{"myname":"wswh","age":18}', //还可以用JSON.stringify({myname:"wswh",age:18})
  success:function(res){
    alert(res);
  }
});


4、发送xml字符串

原生

var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
  if(xhr.readyState==4&&xhr.status==200){
    alert(xhr.responseText);
  }
};
xhr.open("post","server.php");
xhr.send('<?xml version="1.0" encoding="utf-8" ?><group><myname>wswh</myname><age>18</age></group>'); 


jQuery

$.ajax({
  type:"post",
  url:"server.php",
  data:'<?xml version="1.0" encoding="utf-8" ?><group><myname>wswh</myname><age>18</age></group>',
  success:function(res){
    alert(res);
  }
});


5、发送FormData对象

原生

var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
  if(xhr.readyState==4&&xhr.status==200){
    alert(xhr.responseText);
  }
};
var form1=new FormData();  
//创建表单,html5以上支持
//也可以使用现有表单数据 var form1=new FormData(document.getElementById("form1"));
form1.append("myname","wswh");  //添加表单数据
var file1=document.getElementById("file1").files[0];
form1.append("file1",file1);  //添加文件
xhr.open("post","server.php",true);
xhr.send(form1);  


jQuery

$.ajax({
  type:"post",
  url:"server.php",
  data:new FormData(document.getElementById("form1")),
  success:function(res){
    alert(res);
  },
  processData:false,  //告诉jQuery不要去处理发送的数据
  contentType:false  //告诉jQuery不要去设置Content-Type请求头
});


6、跨域访问

跨域访问主要在服务器端配置。


php实现跨域

header("access-control-allow-origin:*"); //*可以替换为具体的一个域名,如http://www.aa.com
header("access-control-allow-headers:origin,x-requested-with,content-type,accept");
header("access-control-allow-methods:get,post,options");


asp.net core实现跨域

Startup.cs

(1)在ConfigureServices()方法中加入:

services.AddCors();

(2)在Configure()方法中加入:

app.UseCors(builder=>builder.AllowAnyOrigin() //或WithOrigins()

.AllowAnyHeader() //或WithHeaders()

.AllowAnyMethod(); 

);


7、发送https请求

ajax直接支持https请求。