1

这就是我想要做的:

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

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

另外,我是不是走错路了?

4

5 回答 5

3

1.在服务器端进行计算:

“我希望使用客户端以获得最大可能的效果来降低服务器成本”不是这样做的最佳理由,如果计算不是 O(4^n),你应该在服务器端继续这样做。

$myvariable = $_POST['numbers']; //I will skip sanitize
SomeCalculations($myvariable); //Making the calculations

2.如果你真的想使用Javascript:

如果您真的想使用javascript(为了简单起见,我将使用 Jquery)进行学习,或者因为您确实认为在这种情况下这是必要的,那么您可以在提交之前获取表单数据并进行计算:

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)

 $('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);
            }
        });
    });
于 2013-11-09T05:04:43.903 回答
1

为什么不在 PHP 端进行所需的计算呢?确保数据不被篡改等更容易并且让您头疼。数据已经在那里传递。

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

  • 将这些值存储在其他(隐藏?)表单字段中,然后传递给 php
  • 使用 php 做同样的计算(不推荐)
  • 取消表单发送动作并通过ajax发送数据
于 2013-11-09T04:29:22.253 回答
0

您可以为您的东西使用 AJAX 方法。$.ajax()or $.post()and etc. 您可以使用任何一种方法供您使用。

参考:http ://api.jquery.com/jQuery.ajax/

参考 - POST:http ://api.jquery.com/jQuery.post/

于 2013-11-09T04:29:13.107 回答
0

由于您希望同时将数据传递给 PHP 和 JavaScript,我只能想到一种方法。它不是真正同时的,但它非常接近它。

所以,让我们说你有这个表格#myAwesomeForm

编写这样的 JavaScript(假设您使用的是 jQuery $.post):

$( '#myAwesomeForm' ).submit( function( e ) {
 var result = someAwesomeFunction() // this will do your calculation and return it
 $.post(
   'someAwesomePHPScript.php',
   {
     formData: $( this ).serialize(),
     calculatedData: result
   }, function( data ) {
     // some more awesome stuff happens here
   }
 );
});
于 2013-11-09T04:39:44.517 回答
-2

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

http://www.w3schools.com/ajax/

否则使用window.location("someFile.php?var1=xyz&...");

于 2013-11-09T04:29:17.753 回答