Skip to content

Fix validasi gagal pada fungsi pindah penduduk - #1283

Open
pandigresik wants to merge 1 commit into
rilis-devfrom
fix/pindah_penduduk
Open

pandigresik wants to merge 1 commit into
rilis-devfrom
fix/pindah_penduduk

Conversation

@pandigresik

Copy link
Copy Markdown
Contributor

Description

Memperbaiki error pada fungsi pindah penduduk di form pindah.blade.php yang gagal memvalidasi data di server. Request dikirim dengan header Content-Type: application/json namun body tetap di-serialize jQuery sebagai URL-encoded (string query), sehingga data dianggap tidak ada oleh validasi server. Solusinya body dikirim sebagai JSON string dan default catatan diubah dari undefined menjadi string kosong.

Changes made:

  1. Bug Fix: Mengubah data: data menjadi data: JSON.stringify(data) pada request AJAX $.ajax({...}) di fungsi simpan().
  2. Bug Fix: Menambahkan contentType: 'application/json' secara eksplisit pada request AJAX agar konsisten dengan header Content-Type: application/json milik header_bearer_api_gabungan.
  3. Bug Fix: Mengubah nilai default catatan dari undefined menjadi '' agar field selalu terkirim (sebelumnya undefined dibuang oleh JSON.stringify).

Reason for change:

  • Point 1: Header Content-Type: application/json bertentangan dengan body yang di-serialize otomatis oleh jQuery menjadi format URL-encoded (ref_pindah=1&alamat_tujuan=...). Server (Laravel/Fractal) tidak dapat meng-parse URL-encoded yang di-label sebagai JSON sehingga input dianggap kosong dan validasi gagal.
  • Point 2: Body kini benar-benar JSON sehingga server dapat meng-parse dan memvalidasi data dengan benar.
  • Point 3: Nilai default catatan yang undefined hilang saat serialisasi JSON; mengubahnya menjadi string kosong memastikan field selalu tersedia jika diwajibkan oleh validasi.

Impact of change:

Validasi server berjalan: Data pindah diparsing sebagai JSON sehingga validasi di server tidak lagi menolak input kosong.
Konsistensi Content-Type: Request AJAX kini konsisten antara header dan body yang dikirim.
Perilaku sesuai konvensi kodebase: Pola JSON.stringify(data) + contentType: 'application/json' sama seperti pada master/artikel/create.blade.php.

Related Issue

  • Solution for fix related to issue #1273

Steps to Reproduce

Before fix (problem):

  1. Buka menu form pindah penduduk (penduduk/pindah).
  2. Isi form Tujuan Pindah, pilih Desa, Alamat Tujuan, Tanggal Peristiwa, Tanggal Lapor.
  3. Klik tombol Simpan.
  4. ❌ Muncul error validasi "Data tidak ditemukan / data tidak ada" karena body dikirim sebagai URL-encoded (string) sementara header Content-Type application/json.

After fix (solution):

  1. Buka menu form pindah penduduk (penduduk/pindah).
  2. Isi form Tujuan Pindah, pilih Desa (via Select2), Alamat Tujuan, Tanggal Peristiwa, Tanggal Lapor.
  3. Klik tombol Simpan.
  4. ✅ Data berhasil disimpan dan dialihkan kembali ke halaman daftar penduduk.

Testing on related features:

  • Form pindah dengan Pindah keluar desa (ref_pindah=1) ✅
  • Form pindah dengan Pindah keluar kecamatan (ref_pindah=2) ✅
  • Pemilihan desa tujuan lewat Select2 mengisi kelurahan_tujuan

Checklist

  • I have complied with script writing rules
  • I have followed pull request review process
  • I have created [unit test/integration test] to verify the fix
  • Manual testing has been done in development environment
  • No console errors or warnings
  • Code has been reviewed by [at least 1 person]

Technical Details

Technical Explanation

jQuery's $.ajax memanggil jQuery.param() pada objek data sehingga mengubahnya menjadi string URL-encoded meskipun header diset Content-Type: application/json. Laravel membaca body berdasarkan Content-Type; untuk application/json ia mencoba meng-parse body sebagai JSON. Karena body bukan JSON, input menjadi kosong dan validasi gagal.

// Sebelum (body => ref_pindah=1&alamat_tujuan=... padahal header JSON)
data: data,

// Sesudah (body => {"ref_pindah":1,"alamat_tujuan":...} + Content-Type JSON)
data: JSON.stringify(data),
contentType: 'application/json',

Configuration changes

Tidak ada perubahan konfigurasi.

Dependencies added

No new dependencies

Testing

Manual Testing

  • Submit form pindah penduduk berhasil tanpa error validasi
  • Nilai ref_pindah = 1 (pindah keluar desa) tersimpan dengan benar
  • Nilai ref_pindah = 2 (pindah keluar kecamatan) tersimpan dengan benar
  • catatan kosong tidak menimbulkan error validasi
  • Regression Testing - test fitur lain yang memanggil API database gabungan tidak terganggu

Automated Testing

  • Unit Test - tidak ada

Screenshots / Video

simplescreenrecorder-2026-09-08_11.12.20.mp4

Before:

Error validasi server "data tidak ditemukan" saat submit form pindah.

After:

Data pindah penduduk berhasil disimpan dan diarahkan kembali ke daftar penduduk.

Breaking Changes

None

Migration Guide

Not required

References


Additional notes: Pola perbaikan ini mengikuti konvensi yang sudah dipakai pada resources/views/master/artikel/create.blade.php yang juga mengirim JSON.stringify(data) ke API database gabungan.

@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown

🔄 AI PR Review sedang antri di server...

Proses review akan segera dimulai di background — hasil akan muncul sebagai komentar setelah selesai.
Powered by CrewAI · PR #1283

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant