ну если ты хочешь обрабатывать брошенные api ошибки конструкцией try catch, то создавай свой класс ошибок.
Нормальный бы пасан создал класс
function ServerAPI (url){
this.getComments = function(){ /*запрос на сервер*/ }
this.postComment = function(text){ /*запрос на сервер*/ }
}
и оба эти метода возвращают промис обьект. у которого есть 2 метода "then" и "error". типа вот так:
var api = ServerAPI('/api.php');
api.postComment('ololo')
.then(function(){ alert('отправлено') })
.error(function(){ alert('ошибка') });
суть http://habrahabr.ru/post/209662/ |
или создай класс для создания ассинхронных API к чему либо)) 'bv классом можно будет конструировать апихи ^_^
// поехали
function API( props ) {
/* подумай что сюда нужно написать =) тут вся магия */
}
var api = new API( {
url: 'api.php',
getComments: function( resolve, reject ) {
var http = new XMLHttpRequest();
http.onerror = function() {
reject();
};
http.onload = function() {
if (http.status === 200) {
resolve();
}
else {
reject();
}
};
http.open( 'GET', this.url + '?comments' );
http.send( null );
}
} );
|
можно чо нить типа того намутить чтобы каждый раз не описывать создание этого обьекта запросов ^_^
var api = new API( {
url: 'api.php',
sendRequest: function( resolve, reject, requestParams ) {
var http = new XMLHttpRequest();
http.open( 'GET', this.url + '?' + requestParams );
http.onerror = reject;
http.onload = function() {
http.status === 200 ? resolve() : reject();
};
http.send( null );
},
getComments: function( resolve, reject ) {
return this.sendRequest( 'comments' ).then( resolve ).error( reject );
}
} );
|
Maxmaxmaximus7, мне нужно прочитать json файл.
сделал так
function HTTPError(obj) {
if(!obj) return;
if(obj.hasOwnProperty("code")
&& obj.hasOwnProperty("text")) {
obj.text = this.messages[obj.code] || obj.text;
}
for(var key in obj){
if(obj.hasOwnProperty(key))
this[key] = obj[key];
}
};
HTTPError.prototype.messages = Object.create({
"404": "Страница не найдена"
});
pages.prototype.getFile = function(src, onload, onerror) {
var xhr = new XMLHttpRequest();
xhr._src = src;
xhr.onreadystatechange = function(e){
if(this.readyState != 4) return;
if(xhr.status == 200) {
return onload.call(this, e);
}
onerror.call(this, new HTTPError({
text: this.statusText,
code: this.status,
object: this
}), e);
};
xhr.open("GET", src);
xhr.send(null);
return xhr;
};
|
чтобы понять всю эту истину тебе надо прочесть ту статью про промисы и написать свой велосипед) я тоже думаю написать свой чтобы скилл поднять, хотя хер знат подымет ли, я вроде уже знаю как это все написать, не оказалось бы это пустой тратой времени
статья http://habrahabr.ru/post/209662/ |
но ты сделал тупо, тебе придется ловить исключения а это уродливо смотрится, вся конструкция трай катч уродливая.
|
Цитата:
|
Не могу понять что за хрень с кодировкой в js файле есть русская строка, и при попытки ее вывести получаю крякозябры, пробыл менять кодировку на 1251, не помогло, при том что в *.html все норм. wtf?
|
меняй на UTF-8
вообще, юзай везде UTF-8 и не знай проблем |
Цитата:
|
| Часовой пояс GMT +3, время: 20:17. |