2016-10-27 28 views
5

API Rest ile çalışıyorum. AJAX and JQuery ile bir kaynak oluşturmak istiyorum. Kaynak kaynağım doğru oluşturuldu, ancak hata geri çağrısı çağrıldı.Geri arama başarısı 201 durum kodu ile çağrılmadı

$.ajax({ 
    url: "/api/skills.json", 
    data: JSON.stringify(skill), 
    method: "POST", 
    contentType: "application/json", 
    statusCode: { 
     201: function (data) { 
      console.log("201"); 
     } 
    }, 
    success: function (data) { 
     console.log("success"); 
    }, 
    error: function (data) { 
     console.log("error"); 
    }, 
    complete: function (data) { 
     console.log("complete"); 
    } 
}); 

Sonucu Firefox konsolundan "Network":

Benim kodudur

HTTP/1.1 201 Created 
Date: Thu, 27 Oct 2016 08:29:08 GMT 
Server: Apache 
X-Powered-By: PHP/7.0.8 
Cache-Control: no-cache 
Location: http://localhost/api/skills/pdak12ada64d 
Allow: POST 
Content-Length: 0 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: application/json 

Ve Konsolundan sonucu:

JQuery 201 ile hatanın geri arama çağırır Neden
"201" 
"error" 
"complete" 

Durum

$.post kestirme yöntemiyle denedim ve aynı sonuçta, özel başlık kullanıyorum çünkü kısayol yöntemini kullanmıyorum.

+2

' success' tepkisi boşken çağrılacak - http://stackoverflow.com/questions/2233553/veri-sokulmuş-başarılı-ama-jquery-hala-dönen yanılma –

cevap

2

Yukarıda yaptığım yorumda belirtildiği gibi, jQuery.Ajax boş bir yanıt aldığında ve JSON olarak ayrıştırmaya çalıştığında, daha sonra yanıtla bir hata olarak yorumlanan bir hata atar (ayrıştırmadan ziyade) onun). Ya success ve error geri aramalar (ı tavsiye ederim) JSON yerine metin olarak istek gönderebilir veya söz konusu yapıyorsun gibi statusCode kullanarak yanıtları işlemek ve kaldırma -

Bu

iki seçeneğiniz var demektir.

Ref: söz konusu veri türünü düşündüren bir cevap `text` olacaksa gelmiştir var başka bir soru üzerine https://stackoverflow.com/a/14988814/12280