Мой API вызывается 2 раза в Ionic - PullRequest
0 голосов
/ 26 февраля 2019

Я работаю в своем Ionic Project, и мой API вызывается 2 раза.Я не могу понять, почему мой API вызывается 2 раза.

Это мой productdetails.html :

<ion-col *ngIf="hassizenot && product.out_of_stock == 0" style="padding: 0px;">
      <button class="mybtn11" (click)="addtocartnew(product)" ion-button small>
        Add to Cart
      </button>
</ion-col>

Это мой productdetails.ts :

addtocartnew(detailsp)
{
this.storage.get("ID").then((val) =>
    {
      if(val)
      { 
        if(detailsp.SelectedSize)
        {
          let usercartnewdetails = {
            user_id: val,
            product_id: detailsp.id,
            size: detailsp.SelectedSize,
          };
          this.restProvider.usercartproducts(usercartnewdetails, 'user_cart/'+detailsp.id+'/'+val+'/'+detailsp.SelectedSize).subscribe((data) => {
            if (data) {
              console.log("One");
              this.responseEdit = data;
              console.log(this.responseEdit.msg);
              if (this.responseEdit.status === 'success') {
                this.presentToast(detailsp.product_name);
              }
              else{
                this.presentToasterror();
              }
            }
          });
        }
        else
        {
          let usercartnewdetails = {
            user_id: val,
            product_id: detailsp.id,
          };
          this.restProvider.usercartproducts(usercartnewdetails, 'user_cart/'+detailsp.id+'/'+val).subscribe((data) => {
            if (data) {
              console.log("Two");
              this.responseEdit = data;
              console.log(this.responseEdit.msg);
              if (this.responseEdit.status === 'success') {
                this.presentToast(detailsp.product_name);
              }
              else{
                this.presentToasterror();
              }
            }
          });
        }
      }
    });
}

Это моя Служба :

usercartproducts(credentials, type) {
  var headers = new HttpHeaders();
  headers.append('Access-Control-Allow-Origin' , '*');
  headers.append('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT');
  headers.append('Accept','application/json');
  headers.append('Content-Type','application/json');
  headers.append('Access-Control-Allow-Credentials','true');
  headers.append('Access-Control-Allow-Headers','Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');

  return this.http.post(apiUrl + type, credentials, {headers: headers});
}

В моем файле ts я запускаю API для добавления продуктов вкорзина, и он показывает только один ответ в консоли, но он вызывает 2 раза, потому что он добавляет продукт 2 раза, а в сети в Chrome, он вызывает 2 раза.

Любая помощьвысоко ценится.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Просто попробуйте это в вашем Сервисе :

usercartproducts(credentials, type) {
  var headers = new HttpHeaders();
  headers.append('Access-Control-Allow-Origin' , '*');
  headers.append('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT');
  headers.append('Accept','application/json');
  headers.append('Content-Type','application/x-www-form-urlencoded');
  headers.append('Access-Control-Allow-Credentials','true');
  headers.append('Access-Control-Allow-Headers','Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With');

  let v = new FormData();
  for(var k in credentials)v.append(k,credentials[k]);
  return this.http.post(apiUrl + type, v, {headers: headers});
}

Это решило мою проблему.

0 голосов
/ 26 февраля 2019

, потому что вы реализуете свой API дважды, и ваше Если условие должно быть неправильным, измените ваши ts следующим образом.

 addtocartnew(detailsp) {
     if (detailsp.SelectedSize) {
       this.storage.get("ID").then((val) => {
         if (val) {

        let usercartnewdetails = {
          user_id: val,
          product_id: detailsp.id,
          size: detailsp.SelectedSize,
        };
        this.restProvider.usercartproducts(usercartnewdetails, 'user_cart/' + 
        detailsp.id + '/' + val + '/' + detailsp.SelectedSize).subscribe((data) => {
           console.log("One");
           this.responseEdit = data;
           console.log(this.responseEdit.msg);
           if (this.responseEdit.status === 'success') {
            this.presentToast(detailsp.product_name);
           }
           else {
             this.presentToasterror();
           }
         }
       });
     }
   })
 }
 else {
   this.storage.get("ID").then((val) => {
     if (val) {
       let usercartnewdetails = {
         user_id: val,
         product_id: detailsp.id,
       };
       this.restProvider.usercartproducts(usercartnewdetails, 'user_cart/' + 
       detailsp.id + '/' + val).subscribe((data) => {
         if (data) {
           console.log("Two");
           this.responseEdit = data;
           console.log(this.responseEdit.msg);
           if (this.responseEdit.status === 'success') {
             this.presentToast(detailsp.product_name);
           }
           else {
             this.presentToasterror();
           }
         }
       });
     }
   })
 }
}

измените в соответствии с вашим условием, и оно будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...