ну если ты хочешь обрабатывать брошенные 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, время: 03:22. |