ErrorException: Undefinierter Array-Schlüssel „Name' in der Datei
P粉187677012
P粉187677012 2023-08-31 10:33:00
0
1
575
<p>Ich arbeite an einem Kundenmanagementsystem, das auch Kundenbestellungen verfolgt. Ich habe eine CRUD-API eingerichtet, um das Lesen und Schreiben von Daten aus der Backend-Datenbank zu verarbeiten, aber wenn ich versuche, die Warenkorbdaten in die Datenbank zu posten, erhalte ich die folgende Fehlermeldung. </p> <blockquote> <p>quote Fehler beim Parsen von JSON aus der Antwort: SyntaxError: Unexpected token '<', " is not valid JSON</p> <p>Folgendes wurde anstelle von gültigem JSON empfangen: <!-- ErrorException: undefinierter Array-Schlüssel „Name“ in der Datei C:UsersmjverOneDriveDocumentsCodingclient-apiroutesapi.php auf Zeile 238</p> </blockquote> <p>Ich habe die Eingabedaten im Array $data["name"] des Clients überprüft und sehe keine Fehler. Ich habe nach Rechtschreibfehlern und Rechtschreibfehlern und so weiter gesucht und hoffe, dass ein paar frische Augen helfen können.</p> <p>我的前后端代码片段如下:</p> <p>调用api.js中的API调用函数:</p> <pre class="brush:php;toolbar:false;">async sendOrder(){ console.log(this.cart); const order = waiting APIController.CreateOrder(this.cart.name, this.cart.qty, this.cart.option, this.cart.price, this.orderNum, this.cart.fee, this.cart.date, this. Ausweis); if(order){ store.dispatch('clearCart'); } },</pre> <p>api.js 文件中的 API-Version:</p> <pre class="brush:php;toolbar:false;">CreateOrder: (Name, Menge, Option, Preis, Bestellnummer, Gebühr, Datum, Benutzer-ID) => { let ResponseClone; const csrfToken = document.cookie.match(/XSRF-TOKEN=([^;]+)/)[1]; Wenn( Name == "" || Menge == "" || option == "" || Preis == "" || orderNo == "" || Datum == "" || userId == "" ) { falsch zurückgeben; } anders { return fetch(API_BASE + "/orders/create", { Methode: "POST", Überschriften: { „Content-Type“: „application/json“, „X-CSRF-TOKEN“: csrfToken }, body: JSON.stringify({ name, qty, option, price, orderNo, fee, date, userId }) }).then((response) => { ResponseClone = Response.clone(); return Response.json() }) .then(data => { if(data.success){ Alert("Bestellung erfolgreich erstellt!") return true; } anders { throw data.response.error; } }, (rejectionReason) => { console.log('Fehler beim Parsen von JSON aus der Antwort: ', RejectionReason, ResponseClone); ResponseClone.text() .then((bodyText) => { console.log('Folgendes wird anstelle von gültigem JSON empfangen: ', bodyText); }); }).catch(err => { alarm(err); }); } },</pre> <p>api.php 文件中的 PHP-Version:</p> <pre class="brush:php;toolbar:false;">Route::post('/orders/create', function(Request $request){ $data = $request->all(); if(!Orders::where('orderNo', '=', $data['orderNo'])->exists()){ $order = Bestellungen::create([ "Name" => $data["name"], "Menge" => $data["menge"], "Option" => $data["Option"], "BestellNr" => $data["orderNo"], „Benutzer-ID“ => $data["userId"], „Preis“ => $data["Preis"], „Gebühr“ => $data["Gebühr"], "Datum" => $data["Datum"], ]); if(empty($order->id)){ zurückkehren [ „Erfolg“ => FALSCH, „Antwort“ => [ "Fehler" => „Es ist ein ungewöhnlicher Fehler aufgetreten“ ] ]; } anders { zurückkehren [ „Erfolg“ => WAHR, „Antwort“ => [ "bestellen" => $bestellen ] ]; } } anders { zurückkehren [ „Erfolg“ => FALSCH, „Antwort“ => [ "Fehler" => „Der Inventarartikel existiert bereits“ ] ]; } });</pre> <p>我的订单模型文件:</p> <pre class="brush:php;toolbar:false;">class Orders erweitert das Modell { benutze HasFactory; protected $fillable = [ 'Produkt', 'Menge', 'Möglichkeit', 'Best.-Nr', 'Benutzer-ID', 'Preis', 'Gebühr', 'Datum', ]; öffentliches Funktionsprodukt (){ return $this->hasMany(Product::class); } }</pre> <p>
P粉187677012
P粉187677012

Antworte allen(1)
P粉543344381

我设法弄清楚了。我 console.log(this.cart.name) 并发现它是“未定义”。经过进一步调查,我发现原因是 state.cart 是一个对象数组,而不仅仅是一个对象。当然,原因是购物车中的每个单独的商品都应该是它自己的对象。所以我的解决方案是:

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);
                }
            }

分解:由于 this.cart 是一个数组而不是一个对象,我必须首先使用 for 循环来获取购物车中每个项目的索引,然后调用将数据发布到数据库的函数。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage