Синтаксическая ОШИБКА угловой 9: Неожиданный токен u в JSON в позиции 0

#angular #get #httpclient #patch

Вопрос:

Я получаю ошибку «PATCH <myurl(id)> 400» для моей функции исправления, я хочу изменить 1 единственную переменную в своей таблице, я действительно не знаю, что я делаю неправильно, так как я впервые использую запрос на исправление

Я больше изучил ошибку и получил такой ответ

 PATCH myurl(id) 400
ERROR SyntaxError: Unexpected token u in JSON at position 0
    at JSON.parse (<anonymous>)
    at SafeSubscriber._error (absense.component.ts:74)
    at SafeSubscriber.__tryOrUnsub (Subscriber.js:183)
    at SafeSubscriber.error (Subscriber.js:135)
    at Subscriber._error (Subscriber.js:75)
    at Subscriber.error (Subscriber.js:55)
    at CatchSubscriber.notifyError (OuterSubscriber.js:7)
    at InnerSubscriber._error (InnerSubscriber.js:14)
    at InnerSubscriber.error (Subscriber.js:55)
    at Observable._Observable__WEBPACK_IMPORTED_MODULE_0__.Observable.scheduler.schedule.error.error [as _subscribe] (throwError.js:4)
 

Это класс absence.ts, я не добавил 2 переменные из своего класса json, потому что они выглядели так «@odata.context» и «@odata.etag», и я не знал, как их реализовать в своем классе

 
export class absence {

    dc_docjustificatif_url : string;
    statecode :string
    dc_absenceid: string;
    dc_document_name: string;
    dc_startdate : string  ;
    statuscode :string ;
    dc_teacher1 :string  ;
    dc_docjustificatif :string
    dc_status :string ;
    createdon : string  ;
    dc_justification :string ;
    _ownerid_value : string  ;
    modifiedon : string  ;
    _dc_classes_value : string  ;
    versionnumber :string ;
    _dc_teacher_value : string  ;
    _dc_student2_value : string  ;
    dc_class1 : string  ;
    timezoneruleversionnumber :string ;
    dc_enddate : string  ;
    _modifiedby_value : string  ;
    dc_docjustificatif_timestamp :string ;
    dc_student : string  ;
    dc_docjustificatifid : string  ;
    dc_acceptance :string ;
    _createdby_value : string  ;
    _owningbusinessunit_value : string  ;
    _owninguser_value : string  ;
    overriddencreatedon :string ;
    dc_document :string ;
    importsequencenumber : string ;
    _modifiedonbehalfby_value : string ;
    _dc_class_value : string ;
    utcconversiontimezonecode : string ;
    _createdonbehalfby_value : string ;
    dc_name : string ;
    dc_description : string ;
    _owningteam_value : string}

 

это мое отсутствие.service.ts

 getAbsence() {
      return this.http.get<any>(this.url).pipe(map(data => data.value))
    }

upload(absence: absence,id) {
        const headers = { 'Accept': '*/*', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, HEAD','Content-Type': 'application/json', 
        'Access-Control-Allow-Headers': 'X-Requested-With,content-type' }

            return this.http.patch<any>(`${this.url}(${id})`, absence, {
                headers
            }
            )
            
    }
 

this is my absence.component.ts

 absences: [];
ngOnInit(): void {
      
    this.absenceService.getAbsence()
        .subscribe(
          res => this.absences = res,
          
        )    

        
    
  }
upload(id){
    this.absenceService.upload(id).subscribe(
      res => {
      console.log(res)
    },
      err => {
      console.log(err);
    }
    );

  }
 

это мое absence.component.html и форму, которую я хочу обновить

 <div class="card"  *ngFor="let absence of absences">
    <div >
      <div class="card-header" id="headingOne"  >
        <div class="row ">
          <!--Execution-->
          <form #absenceform="ngForm" (ngSubmit)="uploadFile(absenceform,absence.dc_absenceid)" enctype="multipart/form-data" >
            <div class="col-1"> 1</div>
          
            
            <div class="col-3 ">

              <div class="custom-file">
                
                <input type="text"
                class="form-control"
                id="description"
                [(ngModel)]="absence.dc_name"
                name="documentname">

              </div>
              </div>
              <div class="col-3 ">
                <button type="submit" >upload</button>
              </div>
            
            
          </form>
          
          <!--Execution-->
          
        </div>
      
    </div>
    </div>
  </div>```

this is the first time I'm using the patch http request can anyone please tell me what i'm doing wrong?
 

Комментарии:

1. Я просто отредактировал свой код для лучшего понимания, если кто-нибудь может помочь, я буду очень благодарен

2. Более подробная информация о структуре интерфейса/класса «отсутствие» в вашем приложении и классе DTO, используемом для метода HTTP-исправления в вашем API. Любая разница в этих классах может привести к этой ошибке.

3. у меня есть 2 переменные, которые я не рассекретил, они выглядят так «@odata.context». есть идеи, как я могу объявить их в классе отсутствия?

4. Я отредактировал свой пост и добавил ошибку, которую получаю

5. Я бы предложил протестировать вызов API с помощью утилиты, такой как POSTMAN, чтобы вы могли отследить, существует ли проблема только на стороне сервера или проблема заключается в несовместимости между HTTP-запросом клиента и методом API на стороне сервера. Оттуда вы можете получить глубокое понимание того, где возникает проблема.