Я не буду так самоуверен, что утвержу, что это стандарт, поэтому я буду использовать форму «Я предпочитаю».
Я предпочитаю сложный ответ (при запросе списка / статей мне нужен массив статей 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 более полезна.
Попробуйте это, новый 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>
Проблема с этой строкой:
var grep = new RegExp('gr[');
'[' специальный символ, таким образом, его нужно оставить. Также эта строка не перенесена в попытку... ловят, таким образом, Вы все еще получаете ошибку.
Править: Вы могли также добавить
alert(e.message);
в пункте выгоды для наблюдения сообщения об ошибке. Это полезно для всего вида ошибок в JavaScript.
Редактирование 2: хорошо, я должен был считать более тщательно вопрос, но ответ все еще там. В примере кода незаконная строка не перенесена в попытку... ловят блок. Я поместил его там и не получил ошибки в Opera 9.5, FF3 и IE7.
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');
помещение инициализации 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.
Ваш RegExp не закрывается [
В моем FireFox это никогда не возвращается от конструктора - похож на ошибку в реализации RegExp, но если Вы обеспечиваете допустимое выражение, это работает
Одна опция состоит в том, чтобы проверить сгенерированные пользователями выражения. Это; символы ESC, которые Вы знаете, остановят Ваш сценарий.