写JS很多时候用到Ajax异步请求方法,一般来说同一个域的时候一般以下写法就通用了:
$.ajax({
type: "",//get或post
url: "",
data: { },
beforeSend: function () {
},
success: function (d) {
},
error: function() {
},
complete: function () {
}
});
但如果涉及跨域请求,就要分2种情况了,如果是get请求:
$.ajax({
dataType:'jsonp',
data:{},
jsonp:'callback',
url:'',
success:function(){
},
});
如果是POST请求,因为$.ajax()并不支持表单提交,那只能通过原始的表单提交的方法
function post(URL, PARAMS) {
var form = document.createElement("form");
form.action = URL;
form.method = "post";
form.style.display = "none";
for (var x in PARAMS) {
var opt = document.createElement("textarea");
opt.name = x;
opt.value = PARAMS[x];
form.appendChild(opt);
}
document.body.appendChild(form);
form.submit();
return form;
}
不过上述方法提交表单后会刷新页面,因此要优化的话最好还是把它放到一个iframe里面,这样就不影响了
当然,还有更简便的方法,我们可以直接修改服务器的代码,使其支持跨域请求
就是在头部添加设置就好,有2种方法:
方法一:
在每一个页面返回前添加
Response.AppendHeader("Access-Control-Allow-Origin","*");
方法二:
在web.config添加配置
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
</customHeaders>
</httpProtocol>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
</customHeaders>
</httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />
</customHeaders>
</httpProtocol>