>  Q&A  >  본문

ErrorException: 파일에 배열 키 'name'이 정의되지 않았습니다.

<p>저는 고객 주문도 추적하는 고객 관리 시스템을 개발하고 있습니다. 백엔드 데이터베이스에서 데이터 읽기 및 쓰기를 처리하기 위해 CRUD API를 설정했지만 장바구니 데이터를 데이터베이스에 게시하려고 하면 다음 오류가 발생합니다. </p> <인용문> <p>quote 응답에서 JSON을 구문 분석하는 중 오류 발생: SyntaxError: 예기치 않은 토큰 '<', "는 유효한 JSON이 아닙니다</p> <p>유효한 JSON 대신 다음을 수신했습니다: <!-- ErrorException: 정의되지 않은 배열 키 파일의 "이름" C:UsersmjverOneDriveDocumentsCodingclient-apiroutesapi.php on 238행</p> </인용문> <p>클라이언트의 $data["name"] 배열에 입력 데이터를 검사했는데 오류가 표시되지 않습니다. 나는 철자 오류와 철자 오류 등을 모두 확인했으며 새로운 눈이 도움이 되기를 바랍니다.</p> <p>나의 이전 작품은 다음과 같습니다</p> <p>调사용api.js중의 API <pre class="brush:php;toolbar:false;">async sendOrder(){ console.log(this.cart); const 주문 = APIController.CreateOrder(this.cart.name, this.cart.qty, this.cart.option, this.cart.price, this.orderNum, this.cart.fee, this.cart.date, this. ID); if(주문){ store.dispatch('clearCart'); } },</pre> <p>api.js 文件中的 API 사용:</p> <pre class="brush:php;toolbar:false;">CreateOrder: (이름, 수량, 옵션, 가격, 주문 번호, 수수료, 날짜, 사용자 ID) => { responseClone을 시키십시오; const csrfToken = document.cookie.match(/XSRF-TOKEN=([^;]+)/)[1]; 만약에( 이름 == "" || 수량 == "" || 옵션 == "" || 가격 == "" || 주문번호 == "" || 날짜 == "" || userId == "" ) { 거짓을 반환; } 또 다른 { return fetch(API_BASE + "/orders/create", { 방법: "POST", 헤더: { "콘텐츠 유형": "application/json", "X-CSRF-TOKEN": csrfToken }, 본문: JSON.stringify({ 이름, 수량, 옵션, 가격, 주문 번호, 수수료, 날짜, userId }) }).then((응답) => { responseClone = response.clone(); response.json() 반환 }) .then(데이터 => { if(데이터.성공){ Alert("주문이 성공적으로 생성되었습니다!") 사실을 반환; } 또 다른 { throw data.response.error; } }, (rejectionReason) => { console.log('응답에서 JSON을 구문 분석하는 중 오류가 발생했습니다: ', ReasonReason, responseClone); responseClone.text() .then((bodyText) => { console.log('유효한 JSON 대신 다음을 수신함: ', bodyText); }); }).catch(err => { 경고(err); }); } },</pre> <p>api.php 文件中的 php 루로由:</p> <pre class="brush:php;toolbar:false;">Route::post('/orders/create', function($request 요청){ $data = $request->all(); if(!Orders::where('orderNo', '=', $data['orderNo'])->exists()){ $order = 주문::생성([ "이름" => $data["이름"], "수량" => $data["수량"], "옵션" => $data["옵션"], "주문번호" => $data["주문번호"], "사용자 ID" => $data["사용자 ID"], "가격" => $data["가격"], "수수료" => $data["수수료"], "날짜" => $data["날짜"], ]); if(empty($order->id)){ 반품 [ "성공" => 거짓, "응답" => [ "오류" => "비정상적인 오류가 발생했습니다" ] ]; } 또 다른 { 반품 [ "성공" => 진실, "응답" => [ "주문" => $주문 ] ]; } } 또 다른 { 반품 [ "성공" => 거짓, "응답" => [ "오류" => "인벤토리 항목이 이미 존재합니다" ] ]; } });</pre> <p>나의 订单模型文件:</p> <pre class="brush:php;toolbar:false;">class Orders는 모델을 확장합니다. { HasFactory를 사용하세요. 보호된 $fillable = [ '제품', '수량', '옵션', '주문번호', '사용자 ID', '가격', '요금', '날짜', ]; 공공 기능 제품 (){ return $this->hasMany(Product::class); } }</pre> <p>如果您能帮助我解决这个问题,我将不胜感激,因为我已经为此苦苦挣扎了一段时间。</p>
P粉187677012P粉187677012439일 전549

모든 응답(1)나는 대답할 것이다

  • P粉543344381

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

    나는 그것을 알아낼 수 있었다. console.log(this.cart.name)를 검색했는데 "정의되지 않음"인 것으로 나타났습니다. 더 자세히 조사한 결과 state.cart가 단지 하나의 객체가 아닌 객체의 배열이기 때문이라는 것을 알게 되었습니다. 물론 그 이유는 장바구니에 담긴 각 개별 항목이 자체 개체여야 하기 때문입니다. 그래서 내 해결책은 다음과 같습니다.

    으아악

    분석: this.cart는 객체가 아닌 배열이므로 먼저 for 루프를 사용하여 장바구니에 있는 각 항목의 인덱스를 가져온 다음 데이터를 데이터베이스에 게시하는 함수를 호출해야 합니다.

    회신하다
    0
  • 취소회신하다