Angular.js: Layanan $http Tidak Memanggil Kesalahan Panggilan Balik pada 400

Dibuat pada 8 Mei 2013  ·  26Komentar  ·  Sumber: angular/angular.js

Versi: 1.1.4

createNewWall: function(wall, successCallback, errorCallback) {
    return $http.post($rootScope.baseAppsAPI + '/walls', null, {
       params: wall
    }).success(function(data, status) {
       return successCallback.call(this, data);
    }).error(function(data) {
       return errorCallback.call(this, data);
    });
}

Saya memverifikasi bahwa fungsi angular isSuccess berfungsi dengan benar. Saya melakukan ini dengan menambahkannya ke objek window dan memverifikasi bahwa kode di bawah ini (ditempatkan di sucess callback saya) menghasilkan panggilan balik kesalahan yang dipanggil.

if (window.isSuccess(status)) {
   return successCallback.call(this, data);
} else {
  return errorCallback.call(this, data);
}

Adakah ide tentang apa yang menyebabkan masalah? Ada yang salah dengan janji $http yang tidak ditolak/diselesaikan dengan benar?

Komentar yang paling membantu

Bagi saya, jawaban @lsiv568 berhasil. Agak aneh pada awalnya tetapi Anda harus mengembalikan janji yang ditolak secara manual ketika Anda membuat pencegat kesalahan ( source ).

.factory('myInterceptor', function($q) {
  return {
    response: function (response) { return response; },
    responseError: function(response) {
      // do stuff or
      return $q.reject(response);
    }
  };
});

Semua 26 komentar

Saya menghadapi masalah yang sama. Cara Anda menutup masalah mungkin berarti saya melakukan sesuatu yang salah, dll. Bisakah Anda membagikan solusi Anda? Tidak dapat menemukan ini di mana pun.

Robert.,

Saya menutup masalah karena masalahnya hilang (secara ajaib) setelah saya
membuat beberapa modifikasi pada layanan saya. Namun, tampaknya kembali
sebentar-sebentar. Jadi, saya tidak lagi tahu apakah itu masalah saya atau
masalah sebenarnya dengan sudut. Jika Anda mau, saya dapat membuka kembali masalah ini dan Anda dapat
menambahkan masalah Anda untuk itu? Apakah itu bekerja untuk Anda?

Pada Senin, 13 Mei 2013 pukul 09:13, [email protected] menulis:

Saya menghadapi masalah yang sama. Cara Anda menutup masalah mungkin berarti saya
dapat melakukan sesuatu yang salah dll. Bisakah Anda membagikan solusi Anda? Tidak bisa
temukan ini di mana saja.


Balas email ini secara langsung atau lihat di Gi tHubhttps://github.com/angular/angular.js/issues/2609#issuecomment -17810417
.

Dengan hormat,

Louis W. Sivillo

Seperti yang dinyatakan di atas, saya membuka kembali masalah ini karena itu terjadi sesekali. rtpm, harap sertakan kasus penggunaan Anda/info tambahan apa pun yang dapat membantu mengidentifikasi masalah

Robert,
Terima kasih telah mengirimkan ini.

Saya memiliki pencegat http yang saya tulis untuk autentikasi dasar yang tidak menolak janji pada kesalahan respons.

Terima kasih bot kalian. Saya memiliki masalah yang sama.

+1 terjadi pada saya ketika server mengembalikan 401

+1
Fungsi panggilan balik tidak berfungsi saat server mengembalikan kode status 401.

Ada kemajuan dalam hal ini? Menghadapi masalah yang sama dengan 400.

Bagi saya, jawaban @lsiv568 berhasil. Agak aneh pada awalnya tetapi Anda harus mengembalikan janji yang ditolak secara manual ketika Anda membuat pencegat kesalahan ( source ).

.factory('myInterceptor', function($q) {
  return {
    response: function (response) { return response; },
    responseError: function(response) {
      // do stuff or
      return $q.reject(response);
    }
  };
});

Menghadapi masalah yang sama dengan 400 ..
Tetapi mengapa masalah ini ditutup, apakah ada solusi khusus untuk masalah ini?

Saya juga menghadapi masalah ini dengan kesalahan 400. Apakah masalah ini teratasi? Jika demikian, dalam versi yang mana?

Saya mengalami masalah yang sama dengan semua >299 kesalahan. Saya menggunakan Restangular dengan pencegat respons khusus, tetapi saya mendapatkan kesalahan dengan layanan $http out-of-the-box, dengan pengecualian header token CSRF. (Saya mencoba menolak objek yang ditangguhkan dari dalam Restangular secara manual, tetapi seperti yang diharapkan itu tidak mengubah apa pun.)

Saya mengalami masalah ini juga, bisakah kita membukanya kembali?

Masalah yang dilaporkan dalam edisi asli adalah karena pencegat khusus tidak menangani kondisi kesalahan dengan benar (janji tidak ditolak). Jika seseorang masih mengalami masalah, kemungkinan besar situasinya sama - harap verifikasi bahwa Anda tidak memiliki interseptor khusus kereta. Jika Anda masih yakin bahwa ada sesuatu yang tidak beres di sisi AngularJS, berikan skenario reproduksi _minimal, live_ (idealnya menggunakan http://plnkr.co/ tetapi alat serupa lainnya akan melakukannya).

@pkozlowski-opensource Terima kasih, saya memang dapat mengonfirmasi bahwa itu adalah masalah saya (d'oh).

Seharusnya ada catatan di dokumen Angular mengenai ini - saya tidak tahu saya sepenuhnya mengesampingkan perilaku janji $http yang mengimplementasikan pencegat saya.

Saya juga mengalami masalah ini dan memiliki pencegat yang saya lihat berulang kali karena memang memiliki pengembalian yang benar. Akhirnya saya menemukan pelakunya. Jika Anda menggunakan beberapa panggilan untuk sukses/kesalahan atau kemudian Anda benar-benar harus memastikan mereka mengembalikan hal yang benar juga :) panggilan balik sukses harus mengembalikan respons yang dimodifikasi sementara panggilan balik kesalahan harus mengembalikan penolakan dengan $q.reject seperti pencegat.

+1 terima kasih teman-teman. Saya memiliki masalah yang sama dengan kustomisasi global $http.interceptor

+1 untuk jawaban @chmanie . Terima kasih banyak! Memperbaiki masalah kami.

+1 Terima kasih @chmanie! memperbaiki masalah saya juga

+1 Terima kasih, menolak memperbaikinya untuk saya!

+1. terima kasih telah memperbaiki masalah saya.

+1 Terima kasih, menolak memperbaikinya untuk saya!

Solusi @chmanie bekerja untuk saya.

@chmanie solusi memperbaiki masalah. Harus ada catatan tentang ini di dokumen Angularjs.

@chmanie terima kasih~

Apakah halaman ini membantu?
0 / 5 - 0 peringkat