【问题标题】:Sending data with AJAX to a PHP file and using that data to run a PHP script使用 AJAX 将数据发送到 PHP 文件并使用该数据运行 PHP 脚本
【发布时间】:2013-02-04 14:34:50
【问题描述】:

我目前正在尝试使用 PHP 和 AJAX 进行实时表单验证。所以基本上 - 我需要通过 AJAX 将字段的值发送到 PHP 脚本(我可以这样做),然后我需要使用我发送的数据在该 PHP 文件中运行一个函数。我该怎么做?

JQuery:

$.ajax({
  type: 'POST',
  url: 'validate.php',
  data: 'user=' + t.value,   //(t.value = this.value),
  cache: false,
  success: function(data) {
    someId.html(data);
  }
});

验证.php:

// 现在我需要使用我在这个函数中发送的“用户”值,我该怎么做?

function check_user($user) {
  //process the data
}

如果我不使用函数,而只是在 validate.php 中使用原始 php,则数据会被发送并执行其中的代码,并且一切都按我喜欢的方式运行,但是如果我添加每个功能,我希望事情变得非常混乱,所以我更喜欢使用单独的函数。

我删除了很多不相关的代码以使其简短。

【问题讨论】:

标签: php ajax forms validation


【解决方案1】:

1) 这看起来不太好

data: 'user=' + t.value,   //(t.value = this.value),

这个不错

data: {user: t.value},  

2) 使用 $_POST

function check_user($user) {
    //process the data
}
check_user($_POST['user'])

【讨论】:

  • 是的,我今天之前读过,但为什么 {user: t.value} 更好?
  • 更容易阅读,是官方文档的语法。因此,如果您不想现在和以后遇到麻烦,我想您最好坚持使用这种语法。
【解决方案2】:

您只需调用文件中的函数即可。

if(isset($_REQUEST['user'])){
    check_user($_REQUEST['user']);
}

【讨论】:

  • 谢谢!这就是我一直在寻找的。通过更多的修改,我设法通过调用我的 PHP 顶部的函数来让事情正常工作,但这要好得多!
  • 我没有在我的回答中包含这个 - 但请注意清理您通过 GET、POST 等收到的任何输入!如果你不这样做,这将为 XSS 和 SQL 注入打开大门。
【解决方案3】:

在您的 validate.php 中,您将收到经典的 POST 请求。您可以根据要测试的变量轻松调用该函数,如下所示:

<?php

if (isset($_POST['user'])) {
    $result = check_user($_POST['user']);
}
elseif (isset($_POST['email'])) {
    $result = check_email($_POST['email']);
}
elseif (...) {
    // ...
}

// returning validation result as JSON
echo json_encode(array("result" => $result));
exit();

function check_user($user) {
   //process the data
   return true; // or flase
}

function check_email($email) {
   //process the data
   return true; // or false
}

// ...
?>

【讨论】:

    【解决方案4】:

    数据在$_POST 全局变量中发送。调用 check_user 函数时可以访问:

    check_user($_POST['user']);
    

    如果您这样做,请记住检查字段值,其中是否没有发送恶意内容。

    【讨论】:

      【解决方案5】:

      我是这样做的

      Jquery 请求

      $.ajax({
                  type: 'POST',
                  url: "ajax/transferstation-lookup.php",
                  data: {
                      'supplier': $("select#usedsupplier").val(),
                      'csl': $("#csl").val()
                  },
                  success: function(data){
                      if (data["queryresult"]==true) {
                          //add returned html to page
                          $("#destinationtd").html(data["returnedhtml"]);
                      } else {
                          jAlert('No waste destinations found for this supplier please select a different supplier', 'NO WASTE DESTINATIONS FOR SUPPLIER', function(result){ return false; });
                      }
                  },
                  dataType: 'json'
              });
      

      PHP 页面 只需输入 2

      $supplier = mysqli_real_escape_string($db->mysqli,$_POST["supplier"]);
      $clientservicelevel = mysqli_real_escape_string($db->mysqli,$_POST["csl"]);
      

      通过查询运行它们。现在,在我的情况下,我只返回存储在 json 数组中的原始 html,并带有一个检查标志,表示查询已经成功或失败,就像这样

      $messages = array("queryresult"=>true,"returnedhtml"=>$html);
      echo json_encode($messages); //encode and send message back to javascript
      

      如果你回顾我最初的 javascript,你会发现我对 queryresult 有条件,然后只需将原始 html 吐回一个 div,你可以用它做任何你需要的事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-18
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-21
        相关资源
        最近更新 更多