【问题标题】:How do I use jquery to get data from a form before submission?如何在提交之前使用 jquery 从表单中获取数据?
【发布时间】:2019-02-06 17:28:20
【问题描述】:

我正在尝试从重力表单字段中获取数据以更新另一个字段中的数据。从我的研究来看,我似乎需要使用 jquery 来做到这一点。处理这个问题的最糟糕的方法是什么?如果我将以下代码放入我的 php 代码中 - 如何访问该变量?

add_filter("gform_field_value_MgrPhone", "set_mgr_phone");
function set_mgr_phone($value){
   global $wpdb; 
   $mgr_name = "Tracy Kaufenberg";
   ?>
  <script>
    var mgr_name = document.getElementById('input_20_81').value;
    console.log(document.getElementById('input_20_81').value);
  </script>
<?php
$sql = "SELECT PhoneNumber 
        FROM ADusers 
        WHERE phoneNumber IS NOT NULL AND displayName = '" . mgr_name2 . "'" ;

//echo $sql;
$sql = $wpdb->prepare($sql,20);
$results = $wpdb->get_results($sql);
$myArray = array();
//echo count($myArray);
foreach ($results as $result) {
    $myArray[] = $result->PhoneNumber;
}

foreach ($myArray as $v) {
    $phone = $v;
}
echo $phone;
return $phone;

}

【问题讨论】:

  • 您是在问如何在 javascript 或 php 中访问变量?
  • 您可以使用 JavaScript。 jQuery 是 JavaScript 的框架;所以 JS 将在本机工作,而 jQuery 需要加载一个库。请记住,PHP 仅在服务器端执行,而 JS/jQuery 是客户端。您可以从 JS/jQuery 中的表单元素中提取 value。如果加载了 jQuery,您发布的代码将在客户端上运行。
  • 我在问如何在 php.ini 中使用变量 mgr_name。 @Twisty
  • 我更新了代码以向您展示我正在尝试做什么。这适用于 $mgr_name 但我想使用来自 javascript 的变量。我该怎么做>
  • @TKaufeberg 直接做到这一点并不容易。您必须使用 Ajax 将数据发送回 PHP。

标签: php jquery gravityforms


【解决方案1】:

原生 JavaScript 选项:

<script>
  var mgr_name = document.getElementById('input_20_81').value;
</script>

您也可以在 JavaScript 控制台中对此进行测试:

console.log(document.getElementById('input_20_81').value);

我强烈建议您学习基本的 JavaScript 教程:https://www.w3schools.com/js/default.asp

如果需要,您可以查看 jQuery。

更新

将 PHP 变量移动到 JavaScript 中

<?php
$mgr_name = "Tracy Kaufenberg";
echo "<script>var mgr_name = '$mgr_name';</script>";
?>

由于 PHP 是一个预处理器,它只在服务器端执行。因此,要将变量传递回 PHP,我们必须通过 HTTP 使用 GET 或 POST 发送它。

<html>
<body>
  <form action="saveMgrName.php" method="POST">
    Manager Name <input type="text" id="input_20_81" name="input_20_81" value="Tracy Kaufenberg" />
    <button type="submit">Send</button>
  </form>
</body>
</html>

所以用户点击Send,浏览器将数据发送到Web服务器,PHP可以使用$_POST['input_20_81']访问它,值将是"Tracy Kaufenberg"

如果您想通过在浏览器中输入的数据从 PHP 收集数据,您可以使用 AJAX 将该数据发送到 PHP 并在不加载新页面的情况下获得响应。它使用 JavaScript 构建 HTTP 请求并在某种意义上将其发送到服务器在后台

鉴于上面的 HTML 代码,您可以像这样使用 jQuery 来完成此操作。

$(function(){
  $("form").submit(function(e){
    e.preventDefault();
    $.post($(this).attr("action"), { mgr_name: $("#input_20_81").val() }, function(response){
      console.log(response);
      if(response){
        alert("Manager Name is saved.");
      }
    });
  });
});

如果您需要从 PHP 获取数据,您可以考虑使用 $.get()$.post()

希望对您有所帮助。

【讨论】:

  • 我喜欢你建议学习基本的 JavaScript 教程。 :)
  • 我确实学习了有关 JavaScript 和 JQuery 的教程,但我仍然卡住了。我更新了代码以显示我想要完成的工作。该代码适用于硬编码的 $mgr_name 但我想使用 javascript 中的变量。任何帮助表示赞赏。
  • @TKaufeberg 更新了一个小的 AJAX 示例。我仍然不清楚您要完成什么,但这可能会对您有所帮助。
猜你喜欢
  • 2020-10-29
  • 2023-03-07
  • 2016-11-13
  • 2015-07-03
  • 1970-01-01
  • 2013-06-22
  • 2012-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多