使用javascript和php单击按钮时如何创建条带产品

Posted

技术标签:

【中文标题】使用javascript和php单击按钮时如何创建条带产品【英文标题】:How to create stripe product when click button using javascript and php 【发布时间】:2021-11-24 23:14:43 【问题描述】:

我正在使用 php 代码在我的产品仪表板中创建产品,如下所示:

\Stripe\Stripe::setApiKey('sk_test_51JxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxJhn');
$product = \Stripe\Product::create([
  'name' => 'test',
]);

所以我在这里尝试做的是,每当我点击提交按钮时,我必须在我的条带仪表板上创建产品:

   <button id="submit-button" type="submit"  class="btn btn-primary" >Submit</button>
<script>
const btn = document.getElementById("submit-button");
btn.addEventListener("click", e => 
               e.preventDefault();
<?php
\Stripe\Stripe::setApiKey('sk_test_51JxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxJhn');
$product = \Stripe\Product::create([
  'name' => 'test',
]);
?>

               )



    </script>

但是,每当重新加载页面时,它都会创建产品。我只希望在单击按钮时创建产品!

【问题讨论】:

您不能直接从 JS 运行 PHP,因为 JS 在客户端运行,而 PHP 在服务器端运行。然而,这可以通过发出 http 请求来实现。一些不错的选择是fetch 或XMLHttpRequest。如果你想使用jQuery,有Ajax @Reyno 在我的情况下我该怎么做? 【参考方案1】:

现在,只要带有按钮的页面加载,您的 PHP 代码就会运行,因为按钮代码和 PHP 代码都在同一个位置,并且您没有任何逻辑来阻止产品创建代码运行。您可能希望将两者分开。

例如,在button.php 你可能有这样的东西:

<a href="create-product.php">Create Product</a>

然后在create-product.php 中,您将拥有创建产品的代码。

您可以使用 javascript 来执行此操作,而无需导航到另一个页面,如下所示:

<button id="submit-button" type="button" class="btn btn-primary">Submit</button>

<script>
const btn = document.getElementById("submit-button");
btn.addEventListener("click", e => 
  e.preventDefault();
  fetch('create-product.php').then( /* Handle response */ );
);
</script>

在此示例中,创建产品的代码也将位于单独的文件中。请参阅MDN's Fetch Usage Guide 了解更多信息。

【讨论】:

以上是关于使用javascript和php单击按钮时如何创建条带产品的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在JavaScript中单击按钮时执行操作

如何在 PHP 中使用 JavaScript 另存为函数?

单击属于表单的另一个按钮时如何禁用提交表单

从javascript函数创建的表单提交FormData到php

如何在按钮单击时创建卡片?

如何在单击 PHP 中的按钮时动态插入列表框?