【问题标题】:How to apply delete in alert function ionic?如何在警报功能离子中应用删除?
【发布时间】:2019-04-23 03:50:15
【问题描述】:

我已经应用了 Laravel 代码并测试了删除数据的 API,它成功了。

现在我想将函数 delete 应用于 ionic。如何将其应用于警报功能?

.ts 文件

confirmdelete() {
  let alert = this.alertCtrl.create({
    title: 'Confirm Delete',
    message: 'Do you confirm to delete?',
    buttons: [
      {
        text: 'Cancel',
        role: 'cancel',
        handler: () => {
          console.log('Cancel clicked');
        }
      },
      {
        text: 'Yes',
        handler: () => {
          console.log('Yes clicked');
        }
      }
    ]
  });
  alert.present();
}

所以我在 ionic 中进行删除时遇到问题。我认为我需要在 yes 处理程序中包含什么或什么?我还是不确定。

api.php

public function deleteMed(Request $request)
{
    $id = $request->id;
    $medname = $request->medname;
    $price = $request->price;
    $stock = $request->stock;
    $medno = $request->medno;
    $ingredient = $request->ingredient;
    $description = $request->description;
    $addinfo = $request->addinfo;

    $user = AddMedicine::where('medno',  $request->input('medno'))->count();

    if($user!=0) {
        AddMedicine::where('id', $id)->delete([
            'id' =>$id,
            'medname'=>$medname,
            'price'=>$price,
            'stock'=>$stock,
            'medno'=>$medno,
            'ingredient'=>$ingredient,
            'description'=>$description,
            'addinfo'=>$addinfo,
        ]);

        $msg = "Data deleted";
        $datamsg = response()->json([
            'success' => $msg
        ]);

        return $datamsg->content();
    } else {
        echo'{"error":{"text":" Medicine does not exist"}}';
    }
}

【问题讨论】:

    标签: laravel ionic3 laragon


    【解决方案1】:

    如果我理解您的要求正确,您需要向您的删除端点发布 HTTP 请求。

    你是对的,这应该在警报“是”处理程序中。

    你会在里面放这样的东西:

    this.http.post('url-of-your-delete-endpoint', {id: 123})
      .map(res => res.json())
      .subscribe(res => {
        // success
        console.log(res);
      }, err => {
        // error
        console.error(err);
      });
    

    此示例使用Angular HttpClient

    希望这能给你一个开始。

    Here 是做这类事情的另一个很好的指南。

    【讨论】:

      【解决方案2】:

      您现在只需要调用 api 端点。您可以使用

      1. Angular's HTTPClient
      2. Ionic Native HTTP.

      您可以选择适合您的需求。 (我个人更喜欢 Ionic Native HTTP 来轻松应对 CORS 问题)

      使用它们的一种方法是使用 HTTP/HTTPClient 在.ts 文件中创建一个用于 api 调用的函数,例如(使用 Ionic Native HTTP):

      async deleteData(){
      
            let url = 'http://localhost/api/api-endpoint-url'
      
            let params = {}; // for request params
      
            await this.http.post(url, params, {}).then(response => {
      
              console.log('from server: ', response);
      
            })
            .catch(error => {
      
              console.log('error: ',error);
      
            });
      
        }
      

      然后在“是”处理程序中调用函数:

      confirmdelete() {
        let alert = this.alertCtrl.create({
          title: 'Confirm Delete',
          message: 'Do you confirm to delete?',
          buttons: [
            {
              text: 'Cancel',
              role: 'cancel',
              handler: () => {
                console.log('Cancel clicked');
              }
            },
            {
              text: 'Yes',
              handler: () => {
                console.log('Yes clicked');
                this.deleteData(); // call deleteData()
              }
            }
          ]
        });
        alert.present();
      }
      

      【讨论】:

      • 感谢您的回复这是我在 yes handler ` { text: 'Yes', handler: () => { console.log('Yes clicked'); this.deleteData(); // 调用 deleteData() } } `
      • ** deleteData() 函数 ** async deleteData(){ let url = 'http://192.168.0.40/clinic123/public/api/deleteMed' let params = {}; // for request params await this.http.post(url, params, {}).subscribe(response => { console.log('from server: ', response); }) .catch(error => { console.log('error: ',error); }); }
      • 我尝试了这些并得到了这个错误。又怎样? polyfills.js:3 POST (my api)clinic123/public/api/deleteMed 405 (方法不允许) –
      • 可能是HTTP方法错误造成的。对于您的 API 端点,您使用了哪种 HTTP 方法? (类似于 POST/GET/DELETE)。如果不是 POST,则需要从 this.http.post 更改为正确的方法。例如,如果您使用的是 DELETE 方法,则更改为 this.http.delete
      • 在 laravel 中我使用 GET 方法。
      猜你喜欢
      • 2016-05-05
      • 2021-11-11
      • 2018-05-23
      • 2022-07-08
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多