2013-07-09 7 views
0

В моем приложении webapp пользователи могут добавлять в свои проекты других пользователей. Пользователь может ввести адрес электронной почты, и он спросит сервер, через сообщение, существует ли пользователь или нет. Если пользователь существует, он отправит обратно DTO, представляющий этот объект. Если пользователь не существует, он должен отправить обратно null.JQuery Ajax использует успешный() обратный вызов для нулевого ответа

Я хочу, чтобы нулевой ответ вызывал обратный вызов успеха, чтобы отличать его от любой другой ошибки на стороне сервера, которая может произойти. Я использую Spring MVC на стороне сервера. Однако возврат null приводит к обратному вызову ошибки. Любые предложения о том, как это сделать?

+1

Оберните «DTO» внутри другого экземпляра объекта, который содержит два поля: один с вашим DTO и другой с вашим желаемым результатом. –

+1

Несомненно, не возвращайте null. возвращение null в запрос json или jsonp корректно инициирует обратный вызов ошибки, поскольку null не является json. –

ответ

4

Вместо того чтобы возвращать null, вы должны вернуть объект, который говорит, что запрос был неудачным или что пользователь не существует. null недействителен JSON (поэтому вызывается обратный вызов error). Итак, вы можете вернуть что-то вроде этого:

{ 
    "successful": false, 
    "message": "User does not exist", 
    "userDTO": null 
} 

Это должно быть довольно тривиально в Spring MVC; вы можете просто добавить их в модель, когда вы ее вернете, или использовать POJO, который содержит эту информацию, и вернуть это вместо этого.

С другой стороны, для успешного выполнения запроса, то не было бы:

{ 
    "successful": true, 
    "message": "User found", 
    "userDTO": { 
     "firstName": "Guybrush", 
     "lastName": "Threepwood" 
    } 
} 
2

От http://api.jquery.com/Ajax_Events/

успех

Это событие вызывается только если запрос был успешно (без ошибок с сервера, никаких ошибок с данными).

ошибка

Это событие вызывается только, если произошла ошибка с запросом (вы никогда не может иметь как ошибку и успех обратного вызова с запросом).

Поскольку у вас есть ошибки на данных, ошибка() обжигают. Попробуйте обернуть нулевой ответ с допустимым форматом данных, указанным вами в вызове ajax (например, json, jsonp, ...).

Смежные вопросы