如何在提交之前使用jquery从表单获取数据?

时间:2019-02-06 17:28:20

标签: php jquery gravityforms

我正在尝试从重力形式字段中获取数据以更新另一个字段中的数据。从我的研究看来,我需要使用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;

}

1 个答案:

答案 0 :(得分: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,我们必须使用GET或POST通过HTTP发送该变量。

<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()

希望有帮助。