jquery ajax的一点点困惑!!!

leffort 2011-03-31 12:06:19
页面代码

<input type="text" id="txt1" value="123" />
<br />
<input type="text" id="txt2" />
<br />
<button id="a">
aaa</button>
<button id="aaa" onclick="aa()">
aaa</button>




$(document).ready(function () {
$("#a").click(function () {
var txt1 = $("#txt1").val();
var txt2 = $("#txt2").val();
if (txt1 == "") {
alert("aaaa");
return;
}
else {
alert("start")
return;
$.ajax({
type: "post",
url: "Default.aspx",
data: "Type=Doa",
success: function (data) {
alert(data);
}
});

alert("end")
}

if (txt2 == "") {
alert("txt2执行了");
return;
}
});
});



结果: alert("start") alert("end") alert("txt2执行了");
alert(data);(我很困惑 )

然后我用纯js写了个(我用的ie8 )

var req = null;
function aa() {

var txt1 = document.getElementById("txt1").value;
var txt2 = document.getElementById("txt2").value;
if (txt1 == "") {
alert("txt1 is null");
}
else {
alert("strat");
req = new XMLHttpRequest();

req.open("post", "Default.aspx?Type=Doa");
req.onreadystatechange = callback;

req.send(null);

alert("end");
}

if (txt2 == "") {
alert("txt2 is null")
}
}

function callback() {
if (req.readyState == 4) {
if (req.status == 200) {
alert(req.responseText);
return;
}
}

}


结果: alert("strat"); alert(req.responseText); alert("end"); 我想要的是这种效果!!!
希望有人帮我解答一下...




...全文
181 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
leffort 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 theforever 的回复:]
据说达芬奇根据自己画的蒙娜丽莎,整急了咱也给自己PS一个绝世佳人……OHYO,我自己先吐了
[/Quote]
我跟你谈技术,你跟我谈女人...艹!!!
  • 打赏
  • 举报
回复
据说达芬奇根据自己画的蒙娜丽莎,整急了咱也给自己PS一个绝世佳人……OHYO,我自己先吐了
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ibm_hoojo 的回复:]
引用 7 楼 theforever 的回复:
楼主头像从哪搞的?

你媳妇?呵呵~
[/Quote]
呵呵,我倒想啊
[Quote=引用 14 楼 leffort 的回复:]
怎么了?是我媳妇的艺术照!!!
[/Quote]
完了,想不成了。楼主你领媳妇出门走路要小心板砖了。
leffort 2011-04-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ibm_hoojo 的回复:]
引用 7 楼 theforever 的回复:

楼主头像从哪搞的?


你媳妇?呵呵~
[/Quote]

怎么了?是我媳妇的艺术照!!!
leffort 2011-04-03
  • 打赏
  • 举报
回复
问题自己解决了,jquery默认的ajax默认的都是异步的。我自己用同步的设置了下,没什么问题!
Zongjianchang 2011-04-01
  • 打赏
  • 举报
回复
我知道你这个是什么问题,我以前遇到过。通过document.getElementById("");如果没有值则为空即"",如果通过Jquery的$("#")取值,如果没有值,则为null。这是他们的不同。
toury 2011-04-01
  • 打赏
  • 举报
回复
还是没改过来,应该是:
你也可以把ajax换成同步的,再按照你自定义的alert()顺序走走就比较清楚了。

总之,我认为,异步下的影响因素很多,如果依此按照自己的想法细究顺序的话,可能会有问题,呵呵。
toury 2011-04-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 leffort 的回复:]

我仔细想了下,jquery的ajax请求默认的都是异步的吧...
[/Quote]
2楼打错字,把同步和异步正好说反了,汗~~
【你也可以把ajax换成异步的,再按照你自定义的alert()顺序走走就比较清楚了。

总之,我认为,同步下的影响因素很多,如果依此按照自己的想法细究顺序的话,可能会有问题,呵呵。】

应该是:
你也可以把ajax换成同步的,再按照你自定义的alert()顺序走走就比较清楚了。

总之,我认为,同步下的影响因素很多,如果依此按照自己的想法细究顺序的话,可能会有问题,呵呵。
yhtapmys 2011-03-31
  • 打赏
  • 举报
回复
$.ajax 里需指定返回的数据格式
如 dataType:'json',
zsrui 2011-03-31
  • 打赏
  • 举报
回复
微观上和宏观上
leffort 2011-03-31
  • 打赏
  • 举报
回复
我仔细想了下,jquery的ajax请求默认的都是异步的吧...
fang7665955 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 leffort 的回复:]
我仔细想了下,jquery的ajax请求默认的都是异步的吧...
[/Quote]
是的
你可以 通过
async:false
设为同步
相反就是异步
hoojo 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 theforever 的回复:]

楼主头像从哪搞的?
[/Quote]

你媳妇?呵呵~
  • 打赏
  • 举报
回复
楼主头像从哪搞的?
toury 2011-03-31
  • 打赏
  • 举报
回复
jquery.ajax()的各事件执行顺序应该是:
ajaxStart--beforeSend--ajaxSend--success--ajaxSuccess--error--ajaxError--completeajaxComplete
--ajaxStop
其中带ajax前缀的时间是Global的,其他是Local的。

你可以在测试中将上述事件函数都走一遍,看看和你自定义的alert()顺序有什么不一样。因为你的程序ajax是同步的。所以自己定义的、认为是正确的顺序不一定正确。

你也可以把ajax换成异步的,再按照你自定义的alert()顺序走走就比较清楚了。

总之,我认为,同步下的影响因素很多,如果依此按照自己的想法细究顺序的话,可能会有问题,呵呵。
hch126163 2011-03-31
  • 打赏
  • 举报
回复
$(document).ready(function () {

$("#a").click(function () {
var txt1 = $("#txt1").val();
var txt2 = $("#txt2").val();
if (txt1 == "") {
alert("aaaa");
return;
}
if (txt2 == "") {
alert("txt2执行了");
return;
}

alert("start")
//return; 这个地方不能return吧,那不终止当前程序了
$.ajax({
type: "post",
url: "Default.aspx",
data: "Type=Doa",
success: function (data) {
alert(data);
alert("end");
}
});





});
});
hoojo 2011-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 leffort 的回复:]

我仔细想了下,jquery的ajax请求默认的都是异步的吧...
[/Quote]
是的,但是还有就是jquery的方法返回的都是jquery对象
$(document).ready(function () {
$("#a").click(function () {
var txt1 = $("#txt1").val();
var txt2 = $("#txt2").val();
if (txt1 == "") {
alert("aaaa");
return;
}
else {
alert("start")
//return; 这个地方不能return吧,那不终止当前程序了
$.ajax({
type: "post",
url: "Default.aspx",
data: "Type=Doa",
success: function (data) {
alert(data);
}
});

alert("end")
}

if (txt2 == "") {
alert("txt2执行了");
return;
}
});
});

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧