aspx中:
function f1() {
$.ajax({
url: "xxx.ashx?action=....",
type: "post",
error: function () { alert('数据加载失败!'); },
success: function (rs) {
if (rs == "y") {
window.xxx= true;
}
else {
window.xxx= false;
}
}
});
alert(window.isHasClass);
}ashx中: response.Write("....");
response.End();
为什么执行的顺序是:
→ $.ajax({
→alert(window.isHasClass);
→response.Write("....");
→response.End();
→success: function (rs) {
→ if (rs == "y") {
。为什么 alert(window.isHasClass) 会比seccess:... 更优先执行?没按顺序来啊??
你就当做再开一个线程执行代码
alert是正常的代码执行
所以会比ajax快点
所以你代码处理要在ajax success中处理 放外面处理调不到success的结果的
Jquery里面好像是没特别说明一般都是异步的。也就是说不按套路走。
手写Ajax的JS部分就很容易明白了
创建好xmlhttprequest对象之后,有个open的方法,3个参数
第一个参数是明确传递的方式,是POST还是GET
第二个参数就是你上面说的ASHX的URL
第三个参数是指明异步还是同步,true就是异步,false就是同步。详细:http://blog.csdn.net/thinkpadleo/article/details/586267
async: false, //是否异步 默认为 true
error: function() { alert('数据加载失败!'); window.location = "ErrorPage.htm"; },