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

时间:2013-11-09 04:25:48

标签: javascript php html

这就是我想要做的事情:

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

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

另外,我是否采取了错误的方式?

5 个答案:

答案 0 :(得分: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);
            }
        });
    });

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

你可以使用AJAX方法。 $.ajax()$.post()等您可以使用任何一种方法供您使用。

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

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

答案 3 :(得分: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
   }
 );
});

答案 4 :(得分:-2)

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

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

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