cari

Rumah  >  Soal Jawab  >  teks badan

ErrorException: 'Nama' kunci tatasusunan tidak ditentukan dalam fail

<p>Saya sedang mengusahakan sistem pengurusan pelanggan yang turut menjejaki pesanan pelanggan. Saya telah menyediakan API CRUD untuk mengendalikan membaca dan menulis data daripada pangkalan data bahagian belakang, tetapi apabila saya cuba MENYIArkan data troli beli-belah ke pangkalan data, saya mendapat ralat berikut. </p> <blockquote> <p>quote Ralat menghuraikan JSON daripada respons: SyntaxError: Token yang tidak dijangka '<', " bukan JSON</p> <p>Menerima yang berikut dan bukannya JSON yang sah: <!-- ErrorException: kunci tatasusunan tidak ditentukan "nama" dalam fail C:UsersmjverOneDriveDocumentsCodingclient-apiroutesapi.php pada Baris 238</p> </blockquote> <p>Saya telah menyemak data input ke dalam tatasusunan $data["name"] pelanggan dan saya tidak nampak sebarang ralat. Saya telah menyemak salah ejaan dan salah ejaan dan semua itu, dan saya berharap beberapa pandangan baru dapat membantu.</p> <p>我的前后端代码片段如下:</p> <p>调用api.js中的API调用函数:</p> <pre class="brush:php;toolbar:false;">async sendOrder(){ console.log(this.cart); pesanan const = tunggu APIController.CreateOrder(nama.cart.ini, ini.cart.qty, this.cart.option, this.cart.price, this.orderNum, this.cart.fee, this.cart.date, this. ID); jika(perintah){ store.dispatch('clearCart'); } },</pre> <p>api.js 文件中的 API 调用:</p> <pre class="brush:php;toolbar:false;">CreateOrder: (nama, qty, pilihan, harga, orderNo, yuran, tarikh, userId) => { biarkan responseClone; const csrfToken = document.cookie.match(/XSRF-TOKEN=([^;]+)/)[1]; jika( nama == "" || qty == "" || pilihan == "" || harga == "" || orderNo == "" || tarikh == "" || userId == "" ) { kembali palsu; } lain { return fetch(API_BASE + "/orders/create", { kaedah: "POST", tajuk: { "Jenis Kandungan": "aplikasi/json", "X-CSRF-TOKEN": csrfToken }, badan: JSON.stringify({ nama, kuantiti, pilihan, harga, No pesanan, yuran, tarikh, ID pengguna }) }).then((respons) => { responseClone = response.clone(); return response.json() }) .then(data => { if(data.success){ makluman("Pesanan berjaya dibuat!") kembali benar; } lain { buang data.respon.error; } }, (RejectionReason) => { console.log('Ralat menghuraikan JSON daripada respons: ', rejectionReason, responseClone); responseClone.text() .then((bodyTeks) => { console.log('Menerima yang berikut dan bukannya JSON yang sah: ', bodyText); }); }).tangkap(err => { makluman(err); }); } },</pra> <p>api.php 文件中的 php 路由:</p> <pre class="brush:php;toolbar:false;">Route::post('/orders/create', function(Minta $request){ $data = $permintaan->semua(); if(!Pesanan::dimana('orderNo', '=', $data['orderNo'])->wujud()){ $order = Pesanan::create([ "nama" => $data["nama"], "qty" => $data["qty"], "pilihan" => $data["pilihan"], "pesananTidak" => $data["orderNo"], "Id pengguna" => $data["userId"], "harga" => $data["harga"], "yuran" => $data["yuran"], "tarikh" => $data["tarikh"], ]); if(empty($order->id)){ kembali [ "kejayaan" => salah, "tindak balas" => [ "kesilapan" => "Ralat luar biasa telah berlaku" ] ]; } lain { kembali [ "kejayaan" => benar, "tindak balas" => [ "pesanan" => $pesanan ] ]; } } lain { kembali [ "kejayaan" => salah, "tindak balas" => [ "kesilapan" => "Item inventori sudah wujud" ] ]; } });</pre> <p>我的订单模型文件:</p> <pre class="brush:php;toolbar:false;">class Orders extends Model { gunakan HasFactory; dilindungi $fillable = [ 'produk', 'qty', 'pilihan', 'orderNo', 'ID Pengguna', 'harga', 'Bayaran', 'Tarikh', ]; produk fungsi awam (){ pulangkan $this->hasMany(Product::class); } }</pre> <p>如果您能帮助我解决这个问题,我将不胜感激,因为我已经为此苦苎我我将不胜感激,因为我已经为此苦苎为此苦苎gt;
P粉187677012P粉187677012485 hari yang lalu578

membalas semua(1)saya akan balas

  • P粉543344381

    P粉5433443812023-09-01 00:13:45

    Saya berjaya memikirkannya. Saya console.log(this.cart.name) dan mendapati ia "tidak ditentukan". Selepas siasatan lanjut, saya mendapati bahawa sebabnya ialah state.cart ialah susunan objek, bukan hanya satu objek. Sebabnya, sudah tentu, setiap item individu dalam troli harus menjadi objeknya sendiri. Jadi penyelesaian saya ialah:

    for(let i = 0; i <= this.cart.length - 1; i++){
                    try {
                        const order = await APIController.CreateOrder(this.cart[i].name, this.cart[i].qty, this.cart[i].option, this.cart[i].price, this.orderNum, this.cart[i].fee, this.cart[i].date, this.id);
                        if(order){
                            this.clearCart();
                        }
                    } catch (error){
                        console.log(error);
                    }
                }

    Memecahkannya: Memandangkan this.cart ialah tatasusunan dan bukan objek, saya perlu menggunakan gelung for terlebih dahulu untuk mendapatkan indeks setiap item dalam troli dan kemudian memanggil fungsi yang menyiarkan data ke pangkalan data.

    balas
    0
  • Batalbalas