JavaScript进行一些计算并将数据传递给PHP

JavaScript进行一些计算并将数据传递给PHP,javascript,php,html,Javascript,Php,Html,这就是我想做的: 提交HTML表单时,表单数据被传递到JavaScript进行一些计算,然后表单数据以及(JavaScript计算的)结果被传递到PHP,以将数据保存到数据库 现在,我知道了如何将表单数据单独传递给JavaScript(或)PHP。但是如何将数据同时传递给这两个用户呢?以及如何将JavaScript数据传递给PHP 还有,我是不是走错了路?你可以用AJAX方法处理你的东西$.ajax()或$.post()等。您可以使用任意一种方法 参考: Ref-POST:如果希望在不更改页面的

这就是我想做的:

提交HTML表单时,表单数据被传递到JavaScript进行一些计算,然后表单数据以及(JavaScript计算的)结果被传递到PHP,以将数据保存到数据库

现在,我知道了如何将表单数据单独传递给JavaScript(或)PHP。但是如何将数据同时传递给这两个用户呢?以及如何将JavaScript数据传递给PHP


还有,我是不是走错了路?

你可以用AJAX方法处理你的东西
$.ajax()
$.post()
等。您可以使用任意一种方法

参考:


Ref-POST:

如果希望在不更改页面的情况下传递数据,请使用AJAX


否则使用
window.location(“someFile.php?var1=xyz&…”

为什么不在PHP上完成所需的计算?确保数据不被篡改,这样做更容易,也省去了您的麻烦,等等。数据已经被传递到那里了

无论如何,您需要让javascript监视表单,并在用户完成表单时运行计算。你可以:

  • 将这些值存储在其他(隐藏?)表单字段中,然后将这些字段传递给php
  • 使用php执行相同的计算(不推荐)
  • 取消表单发送操作并通过ajax发送数据

既然您希望同时向PHP和JavaScript传递数据,我只能想到一种方法。这不是同时发生的,但非常接近

那么,让我们假设您有这个表单
#myAwesomeForm

编写如下JavaScript(假设您使用的是jQuery):

1.在服务器端进行计算:
“我希望使用客户端以获得最大可能的效果,从而降低服务器成本”并不是这样做的最佳理由,如果计算结果不是O(4^n),您应该在服务器端继续这样做

$myvariable = $_POST['numbers']; //I will skip sanitize
SomeCalculations($myvariable); //Making the calculations
2.如果您真的想使用Javascript: 如果您真的想使用
javascript
(为了简单起见,我将使用Jquery)进行学习,或者因为您确实认为在这种情况下这是必要的,那么您可以在提交和执行计算之前获取表单数据:

$('form').submit(function(e){
    e.preventDefault()
    var $this = $(this)
    var formData = $this.serialize()
    // do some calculations
    var yourData = makeCalculations(formData);
    $(this).submit();
});
2.1在进行计算后,以普通表格的形式提交表格:

$('form').submit(function(e){
    e.preventDefault()
    var $this = $(this)
    var formData = $this.serialize()
    // do some calculations
    var yourData = makeCalculations(formData);
    $(this).submit();
});
2.2通过Ajax提交表单(推荐使用,因为您已经在使用Javascript)


这是可能的,但是。。。您不能仅用PHP进行此计算吗?为什么需要在客户端创建它们?我在回答中也对javascript的需求提出了疑问。记住,用户总是可以篡改客户端处理的数据。不要相信用户输入的计算结果或最终数字。清理/过滤数据,在服务器端执行calcs,然后显示总体在现代web规模的开发中,渲染/计算正越来越多地转移到客户端。这正是我们与2010年及更早版本的区别所在。@Guillhermesehn我希望使用客户端以尽可能地降低服务器成本。@Zhube,我没有足够的上下文来讨论这个具体问题,但如果他希望他的计算是篡改安全的,他还必须检查服务器端的结果是否正确。由于他发送的是带有值的表单,而不是在页面中呈现这些值,因此在发送之前在客户端进行计算似乎是不必要的额外步骤。AJAX可能会起作用,但我怀疑这是正确的解决方案,但是,在查询字符串中使用表单值重定向用户的位置只是为了尽可能地使用客户端以降低服务器成本。您所说的服务器成本到底是什么意思?这听起来并不是什么问题。请提供有关您正在进行的计算类型的更多信息。从性能角度来看,在服务器端进行计算非常便宜。在服务器端执行此操作更安全,并且将所有逻辑保持在一个位置非常重要。
 $('form').submit(function(e){
        e.preventDefault()
        var $this = $(this)
        var formData = $this.serialize()
        // do some calculations
        $.ajax({
            type:  "POST",
            url:   "http://nakolesah.ru/",
            data:   makeCalculations(formData),
            success: function(msg){
                //This is returned in the server side
                alert('wow'+msg);
            }
        });
    });