gpt4 book ai didi

javascript - 如何使用纯Javascript实现同步Ajax调用?

转载 作者:行者123 更新时间:2023-11-28 13:34:30 24 4
gpt4 key购买 nike

我需要实现同步Ajax调用机制。我已经在我的助手中实现了 ajax 调用功能,如下所示:

MH.helper = {
ajax : function (option) {
if(option !== undefined) {
for(var opt in option) {
this[opt] = option[opt];
}
}

if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
this.xhr=new XMLHttpRequest();
} else {
// code for IE6, IE5
this.xhr=new ActiveXObject("Microsoft.XMLHTTP");
}
}
}

我还实现了 Ajax 原型(prototype),如下所示:

MH.helper.ajax.prototype = {
// XMLHttpRequest obj
xhr : null,

// request url
url: '',

// post funciton
post: function() {

var xhr = this.xhr;
var that = this;

xhr.onreadystatechange=function() {
if(xhr.readyState==4 && xhr.status==200){
if(that.complete && ( typeof that.complete === 'function' )) {
that.complete(xhr.responseText);
}
}
}

var data = MH.helper.serialize(this.data, true);

xhr.open("POST",this.url,true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send(data);
},

// get funciton
get: function() {

var xhr = this.xhr;
var that = this;

xhr.onreadystatechange=function() {
if(xhr.readyState==4 && xhr.status==200){
if(that.complete && ( typeof that.complete === 'function' )) {
that.complete(xhr.responseText);
}
}
}

var data = MH.helper.serialize(this.data);
xhr.open("GET",this.url+data,true);
xhr.send(data);
},

// callback when request done
complete: null
}

有人知道如何使用 Ajax 函数实现同步调用吗?

最佳答案

xhr.open("POST",this.url,true)

如果您传递 false 作为第三个参数而不是 true - 调用将同步执行。

但我的建议是——不要。始终使用回调函数。

关于javascript - 如何使用纯Javascript实现同步Ajax调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22463579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com