我使用一个小型库来进行ajax调用。我希望函数在输入不存在的URL时抛出错误。
目前,它无声地失败,只是简单地传回未定义的响应文本。这使得一般的故障排除更加困难。
有一种简单的方法吗?
/**************************************************************************************************
AJAX
*/
// specify type/url/callback in passed object
Pub.ajax = function (config_ajax) {
var xhr = new win.XMLHttpRequest();
// get
if (config_ajax.type === 'get') {
xhr.open('GET', config_ajax.url, true);
xhr.onload = function () {
if (this.status === 200) {
config_ajax.callback(xhr.responseText);
}
};
xhr.send(null);
}
// post
if (config_ajax.type === 'post') {
xhr.open("POST", config_ajax.url, true);
xhr.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
xhr.onload = function () {
if (this.status === 200) {
config_ajax.callback(xhr.responseText);
}
};
xhr.send(config_ajax.data);
}
// post for form_data
if (config_ajax.type === 'multi') {
xhr.open("POST", config_ajax.url, true);
xhr.onload = function () {
if (this.status === 200) {
config_ajax.callback(xhr.responseText);
}
};
xhr.send(config_ajax.data);
}
};
答案 0 :(得分:0)
我假设您无法使用具有.success和.error的jQuery $.ajax。
根据您的呼叫以及服务器的响应方式,您可能需要使其更加强大。
if (this.status === 200) {
config_ajax.callback(xhr.responseText);
} else if (console) {
console.error("ajax call failed"
}
答案 1 :(得分:0)
试试这个
**************************************************************************************************
AJAX
*/
// specify type/url/callback in passed object
Pub.ajax = function (config_ajax) {
var xhr = new win.XMLHttpRequest();
// get
if (config_ajax.type === 'get') {
xhr.open('GET', config_ajax.url, true);
xhr.onload = function () {
if (this.status === 200) {
config_ajax.callback(xhr.responseText);
}
};
xhr.send(null);
}
// post
if (config_ajax.type === 'post') {
xhr.open("POST", config_ajax.url, true);
xhr.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
xhr.onload = function () {
if (this.status === 200) {
config_ajax.callback(xhr.responseText);
}
};
xhr.send(config_ajax.data);
}
// post for form_data
if (config_ajax.type === 'multi') {
xhr.open("POST", config_ajax.url, true);
xhr.onload = function () {
if (this.status === 200) {
config_ajax.callback(xhr.responseText);
}
};
xhr.send(config_ajax.data);
}
// when the ready state changes check for success or failure
xhr.onreadystatechange=function(){
if (xhr.readyState==4 && xhr.status==200)
{
//Success
alert('success');
}else{
//Failure
alert('Failure');
}
}
};