Попытка/Выгода JavaScript

Я не буду так самоуверен, что утвержу, что это стандарт, поэтому я буду использовать форму «Я предпочитаю».

Я предпочитаю сложный ответ (при запросе списка / статей мне нужен массив статей JSON).

В моих проектах я использую протокол HTTP для отчета о состоянии, 200 возвращает только полезную нагрузку.

400 возвращает сообщение о том, что было неправильно с запросом:

{"message" : "Missing parameter: 'param'"}

Возврат 404, если модель / контроллер / URI не существует

Если есть была ошибка обработки на моей стороне, я возвращаю 501 с сообщением:

{"message" : "Could not connect to data store."}

Из того, что я видел, довольно много структур REST-ish, как правило, находятся в этих строках.

Обоснование:

Предполагается, что JSON является форматом полезной нагрузки, это не протокол сеанса. Вся идея многословных полезных данных сеанса происходит из мира XML / SOAP и различных ошибочных вариантов, которые создавали эти раздутые проекты. После того, как мы поняли, что все это было массивной головной болью, весь смысл REST / JSON заключался в том, чтобы KISS его и придерживаться HTTP. Я не думаю, что в JSend есть что-либо удаленно standard , и особенно не с более подробным из них. XHR будет реагировать на HTTP-ответ, если вы используете jQuery для своего AJAX (как и большинство других), вы можете использовать обратные вызовы try / catch и done() / fail() для захвата ошибок. Я не вижу, как инкапсуляция отчетов о состоянии в JSON более полезна.

5
задан Mark Biek 23 September 2008 в 12:56
поделиться

6 ответов

Попробуйте это, новый RegExp выдает исключение

Regex

    <script type="text/javascript" charset="utf-8">
            var grep;

            try {
                    grep = new RegExp("gr[");
            }
            catch(e) {
                    alert(e);

            }
            try
            {
                    var results = grep.exec('bob went to town');
            }
            catch (e)
            {
                    //Do nothing?
            }

            alert('If you can see this then the script kept going');
    </script>

17
ответ дан 18 December 2019 в 05:37
поделиться

Проблема с этой строкой:

var grep = new RegExp('gr[');

'[' специальный символ, таким образом, его нужно оставить. Также эта строка не перенесена в попытку... ловят, таким образом, Вы все еще получаете ошибку.

Править: Вы могли также добавить

alert(e.message);

в пункте выгоды для наблюдения сообщения об ошибке. Это полезно для всего вида ошибок в JavaScript.

Редактирование 2: хорошо, я должен был считать более тщательно вопрос, но ответ все еще там. В примере кода незаконная строка не перенесена в попытку... ловят блок. Я поместил его там и не получил ошибки в Opera 9.5, FF3 и IE7.

8
ответ дан 18 December 2019 в 05:37
поделиться
var grep, results;

try {
    grep = new RegExp("gr[");
    results = grep.exec('bob went to town');
}
catch(e) {
    alert(e);
}
alert('If you can see this then the script kept going');
4
ответ дан 18 December 2019 в 05:37
поделиться

помещение инициализации RegExp в попытке/выгоде будет работать (просто протестированный в FireFox)


var grep, results;

try
{
    grep = new RegExp("gr["); // your user input here
}
catch(e)
{
    alert("The RegExpr is invalid");
}

// do your stuff with grep and results

Выход здесь не является решением. Так как цель этого отрывка состоит в том, чтобы на самом деле протестировать сгенерированный пользователями RegExpr, Вы захотите поймать [как открытый контейнер RegExpr.

2
ответ дан 18 December 2019 в 05:37
поделиться

Ваш RegExp не закрывается [

В моем FireFox это никогда не возвращается от конструктора - похож на ошибку в реализации RegExp, но если Вы обеспечиваете допустимое выражение, это работает

1
ответ дан 18 December 2019 в 05:37
поделиться

Одна опция состоит в том, чтобы проверить сгенерированные пользователями выражения. Это; символы ESC, которые Вы знаете, остановят Ваш сценарий.

0
ответ дан 18 December 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: