Javascript 和 PHP 函数

IT技术 php javascript function
2021-01-21 03:19:00

是否可以使用onsubmitJavaScript从 PHP 调用函数如果是这样,有人可以给我一个如何完成的例子吗?

function addOrder(){
    $con = mysql_connect("localhost", "146687", "password");
    if(!$con){
        die('Could not connect: ' . mysql_error())
    }

    $sql = "INSERT INTO orders ((user, 1st row, 2nd row, 3rd row, 4th row)
    VALUES ($session->username,1st variable, 2nd variable, 3rd variable, 4th variable))";

    mysql_query($sql,$con)
    if(mysql_query($sql,$con)){
        echo "Your order has been added";
    }else{
        echo "There was an error adding your order to the databse: " . mysql_error();
    }
}

这就是我想要调用的函数。它是一个订购系统,你输入你想要的每个项目的数量,点击提交,它应该将订单添加到表格中。

6个回答

您不能从 Javascript 调用 PHP 函数...

Javascript 是一种客户端语言(它在接收网页后在 Web 浏览器上执行)而 PHP 在服务器端(它在呈现网页之前执行)。你没有办法打一个电话。

...但是你可以得到一个外部 PHP 脚本的结果

有一个名为 xhttprequest 的 Javascript 函数,它允许您调用 Web 服务器上的任何脚本并获得它的答案。因此,要解决您的问题,您可以创建一个输出一些文本(或 XML 或 JSON)的 PHP 脚本,然后调用它,然后使用 Javascript 分析答案。

这个过程就是我们所说的AJAX,用一个好的工具来完成它比你自己容易得多。看看JQuery,它功能强大且易于使用,具有内置 AJAX 帮助程序的 Javascript 库。

JQuery(客户端)的一个例子:

$.ajax({
   type: "POST", // the request type. You most likely going to use POST
   url: "your_php_script.php", // the script path on the server side
   data: "name=John&location=Boston", // here you put you http param you want to be able to retrieve in $_POST 
   success: function(msg) {
     alert( "Data Saved: " + msg ); // what you do once the request is completed
   }

听起来你想要AJAX

对于一个单一的答案来说,这个话题太大了,但这应该能让你继续前进。

基本上,Javascript 将向您服务器上的 PHP 脚本发送 HTTP 请求,然后对响应执行某些操作。 JSON可能也是您想要了解的内容。

这是一个过于笼统的答案,您至少应该为图书馆提供一些指导。我建议 XAJAX。
2021-04-02 03:19:00

这是间接可以调用使用JavaScript PHP函数。正如其他人已经提到的,您将想要执行某种类型的请求 - 这不一定是 Ajax。它可以是同步的。在不确切知道您要完成什么的情况下,我的建议如下:

  • 将事件处理程序附加到表单的提交选项(如果您不打算使用 Ajax,则使用标准提交)
  • 将需要在 POST 或页面地址的查询字符串中传递给 PHP 函数的任何参数捆绑在一起。
  • 触发请求(异步或通过提交)
  • 在作为请求目标的 PHP 脚本中,从 $_POST 或 $_GET 中提取参数。
  • 使用参数调用您需要的 PHP 函数。
  • 一旦请求完成,回显响应并根据需要解析它。

同样,这有点笼统,但您的问题也是如此。希望这给出了某种方向。

您将获得的最接近的是xajax,它可以让您将 PHP 函数包装到 AJAX 调用中。在开始使用 Zend Framework 之前,我已经使用了很多,但发现以 OO 方式实现它太难了。

使用 xajax,您可以编写一个 PHP 函数来执行所有常规逻辑,然后返回一个 ObjectResponse 对象,该对象通过 AJAX(警报框、更改 HTML、CSS 等)操作浏览器。您使用 xajax 注册您的函数,然后 xajax 会将一些 javascript 吐出到您的 HTML 部分。

在您的 HTML 中,您只需调用 xajax 生成的 javascript 函数,然后它会通过 AJAX 处理其余部分。

你会想要做这样的事情:

<form action="add_order.php" method="POST" id="add_order_form">
<!-- all of your form fields -->
<input type='submit' value='Add Order'>
</form>

<script type="text/javascript">
$("#add_order_form").submit(function() {
    var action = $("#add_order_form").attr("action");
    var data = $("#add_order_form").serialize();
    $.post(action, data, function(json, status) {
        if(status == 'success') {
            alert(json.message);
        } else {
            alert('Something went wrong.');
        }
    }, "json"); 
    return false;
});
</script>

然后有一个名为的 PHP 文件add_order.php,例如:

$success = 0;
$con = mysql_connect("localhost", "146687", "password");
if(!$con) {
    $message = 'Could not connect to the database.';
} else {
    // SANITIZE DATA BEFORE INSERTING INTO DATABASE
    // LOOK INTO MYSQL_REAL_ESCAPE_STRING AT LEAST,
    // PREFERABLY INTO PREPARED STATEMENTS
    $query_ok = mysql_query("INSERT INTO `orders` ....");
    if($query_ok) {
        $success = 1;
        $message = "Order added.";
    } else {
        $message = "Unable to save information";
    }
}

print json_encode(array('success' => $success, 'message' => $message));

要使这种美发挥作用,您必须访问jQuery网站,下载它,并包含 jquery.js 文件。

我还没有测试过上面的,但它应该可以工作。祝你好运。