A chamada ajax do JQuery executa erro em 200 [duplicado]

Esta pergunta já tem uma resposta aqui:

A solicitação Ajax retorna 200 OK, mas um evento de erro é acionado em vez de bem-sucedido 16 respostas

Meu código de servidor c # / WebApi se parece com:

[HttpPost]
public HttpResponseMessage Logout()
{
    // do some stuff here ... 
    return Request.CreateResponse(HttpStatusCode.OK);
}

No cliente eu faço uma chamada ajax usando jquery 2.0.3

ADICIONADO: código Jquery (datilografado) ...

    var ajaxSettings: JQueryAjaxSettings = {};
    ajaxSettings.type = 'POST';
    ajaxSettings.data = null;
    ajaxSettings.contentType = "application/json; charset=utf-8";
    ajaxSettings.dataType = "json";
    ajaxSettings.processData = false;

    ajaxSettings.success = (data: any, textStatus: string, jqXHR: JQueryXHR) => {
        console.log("Success: textStatus:" + textStatus + ", status= " + jqXHR.status);
    };
    ajaxSettings.error = (jqXHR: JQueryXHR, textStatus: string, errorThrow: string) => {
        console.log("Error: textStatus:" + textStatus + ", errorThrow = " + errorThrow);
    };

    $.ajax("http://apidev.someurl.com/v1/users/logout", ajaxSettings);

ADICIONADO 2: Cabeçalhos de solicitação resultantes do código acima:

POST http://apidev.someurl.com/v1/users/logout HTTP/1.1
Host: apidev.someurl.com
Connection: keep-alive
Content-Length: 0
Cache-Control: no-cache
Pragma: no-cache
Origin: http://apidev.someurl.com
Authorization: SimpleToken 74D06A21-540A-4F31-A9D4-8F2387313998
X-Requested-With: XMLHttpRequest
Content-Type: application/json; charset=utf-8
Accept: application/json, text/javascript, */*; q=0.01
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
Referer: http://apidev.someurl.com/test/runner/apitest/index.html?
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8

A resposta é 200, mas o manipulador de erros da chamada ajax é acionado em vez do manipulador de sucesso. Razão: parseerror, final inesperado da entrada.

Uma solução é alterar o código do servidor para:

return Request.CreateResponse<String>(HttpStatusCode.OK, "Logout ok");

Entendo que uma resposta vazia não é JSON válida, mas a mensagem de resposta está intencionalmente vazia. O 200 diz tudo. Os cabeçalhos de resposta são parecidos com:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Expires: -1
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: http://apidev.someurl.com
Access-Control-Allow-Credentials: true
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sun, 05 Jan 2014 01:20:30 GMT
Content-Length: 0

Isso é um bug no jquery? Ou o Request.CreateResponse (OK) nunca deve ser usado dessa maneira? Devo corrigir isso com alguma solução alternativa no cliente? AFAIK o servidor não está fazendo errado aqui ... alguma opinião?

EDIT: Graças ao feedback de Kevin, Nick e John, este problema ficou claro. A solução que escolho é retornar um NoContent

return Request.CreateResponse(HttpStatusCode.NoContent);

No servidor, parece que, neste caso, o código correto. No lado do cliente, isso é tratado perfeitamente pelo JQuery (o manipulador de sucesso é chamado). Obrigado a todos por esclarecer isso!

(Eu não sei a quem dar crédito pela resposta ... já que nick e kevin deram seus valiosos comentários nos comentários, o feedback de johns também acrescentou um melhor entendimento) ... se nenhuma outra sugestão for dada ... depois marque a única 'resposta' como Resposta)

Obrigado a todos!

questionAnswers(2)

yourAnswerToTheQuestion