【问题标题】:Passing JS to PHP将 JS 传递给 PHP
【发布时间】:2017-12-12 13:21:13
【问题描述】:

我正在尝试通过 php 将存储在变量中的字符串传递给 mysql 表。

目前我正在使用类型为hidden<input>,我将我想要的变量分配为其值并通过form 提交将其发布。 它可以工作,但很丑。

我知道有$.post$.ajax,但我似乎不知道如何在js 端和php 端使用它们。我在网上找过,有很多这类问题,但没有一个对我有用(可能是因为我缺少知识)

我该怎么做?

【问题讨论】:

  • 能否分享一下你的 JavaScript 和 PHP 代码的相关部分?
  • 请给你看代码,,,

标签: javascript php jquery mysql ajax


【解决方案1】:

这是一个非常基本的例子。我们从 HTML 页面上的表单开始。单击此按钮时,我们将激活一个 javascript 函数。

<html>
  <form>
    <input type="email" id="email-field" />
    <input id="submitButton" type="submit" value="Submit" />
  </form>
</html>

现在,这是由于单击按钮而激活的 javascript 函数。在内部,我们提取可能已在输入字段中填写的任何信息,ID 为“email-field”,然后通过 ajax 将其发送到服务器上的 php 文件。

$('#submitButton').click(function() {
  var email = $('#email-field').val();

  $.ajax({
    type: 'POST',
    url: './yourphpfilename.php',
    data: {
      email: email
    }
  }).done(function(data) {
    console.log(data) // Will send you the result that is echoed in the PHP file
  })
})

只要你在你的 ajax 请求中输入正确的 url 到你的 PHP 文件,你就可以很容易地接收到正在发送的数据,

<?php

 if($_SERVER['REQUEST_METHOD'] == 'POST') {

   $email = $_POST['email'];
   echo 'I have received your request.';

 }

为了发回数据,我在这里使用了 echo 命令。

尝试阅读一些关于 PHP 中 $_POST 变量的文档。注意我是如何调用 ['email'] 的。括号内的标识符与 js 文件中数据对象内的键直接相关。例如,假设我们决定在 js 文件中将我们的电子邮件密钥命名为不同的名称。

data: {
   useremail: email
}

然后您只需像这样更改 PHP 代码,

$email = $_POST['useremail'];

刚开始这让我很困惑,如果你不知道它是如何工作的,有时甚至很难提出一个高质量的问题。不过,在未来,我至少会尝试发布一些代码来表明您尝试了该问题。

【讨论】:

  • 您的代码不会按预期工作,因为该按钮将提交表单并导致页面重新加载(GET to self 没有命名输入字段)。你忘了preventDefault参加活动,或者使用&lt;button type="button"&gt;,或者删除&lt;form&gt;
  • &lt;button&gt; 元素将提交它们所在的表单,除非您明确设置type="button"。我很难学到这一点。
  • 其实你们是对的。所以我检查了我使用这个脚本的网站,我使用的是输入标签。有趣的是,我没有任何 preventDefault 语句,并且它不会刷新页面。无论如何,我会将其添加到答案中作为更安全的选择。
  • 那么您要么没有表单,要么在其他地方阻止了它的提交。您的 e.preventdefault() 在您的点击事件中是不必要的。您需要 e.stopPropagation() 或使用 $("form").submit 事件的功能。在后一种情况下,我建议为您的表单标签使用 id,而不是使用“表单”作为选择器。
  • 好的!谢谢 :) 只是为了让您知道我没有使用表单,因为没有表单可以提交它是我需要传递给表格的画布数据感谢您的帮助
【解决方案2】:

你需要做几件事:

  1. 你有一个form标签,你需要阻止它提交,像这样:

$("#myformid").submit(function(event) { //Do something event.preventDefault(); });

如果您的form 不再提交,那么您就在正确的轨道上。

  1. 你需要使用$.ajax来发送请求,像这样: $("#myformid").submit(function(event) { //Here I assume that all variables have been properly initialized $.ajax({ url: "yoururl", method: "POST", data: yourdata, //yourdata should contain the things you intend to send to the server }).done(function(response) { //callback }); event.preventDefault(); });

  2. 您将需要一个 PHP 代码来正确处理您在 yoururl 发送的 POST 请求。这是在 PHP 中检查请求方法是否为 POST 的方法: if ($_SERVER['REQUEST_METHOD'] === 'POST') { //It is a POST request } else { //It is not a POST request }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 2020-06-24
    • 2021-01-07
    • 2018-02-02
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多