这就是我想要做的:
当提交 HTML 表单时,表单数据被传递给 JavaScript 进行一些计算,然后表单数据连同结果(JavaScript 计算)被传递给 PHP 以将数据保存到数据库中。
现在,我知道如何将表单数据单独传递给 JavaScript(或)PHP。但是如何同时将数据传递给他们两个呢?以及如何将 JavaScript 数据传递给 PHP?
另外,我是不是走错路了?
这就是我想要做的:
当提交 HTML 表单时,表单数据被传递给 JavaScript 进行一些计算,然后表单数据连同结果(JavaScript 计算)被传递给 PHP 以将数据保存到数据库中。
现在,我知道如何将表单数据单独传递给 JavaScript(或)PHP。但是如何同时将数据传递给他们两个呢?以及如何将 JavaScript 数据传递给 PHP?
另外,我是不是走错路了?
“我希望使用客户端以获得最大可能的效果来降低服务器成本”不是这样做的最佳理由,如果计算不是 O(4^n),你应该在服务器端继续这样做。
$myvariable = $_POST['numbers']; //I will skip sanitize
SomeCalculations($myvariable); //Making the calculations
如果您真的想使用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);
}
});
});
为什么不在 PHP 端进行所需的计算呢?确保数据不被篡改等更容易并且让您头疼。数据已经在那里传递。
无论如何 - 您要么需要让 javascript 监视表单并在用户完成它时运行计算。你可以:
您可以为您的东西使用 AJAX 方法。$.ajax()
or $.post()
and etc. 您可以使用任何一种方法供您使用。
参考:http ://api.jquery.com/jQuery.ajax/
参考 - POST:http ://api.jquery.com/jQuery.post/
由于您希望同时将数据传递给 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
}
);
});
如果您想在不更改页面的情况下传递数据,请使用AJAX。
http://www.w3schools.com/ajax/
否则使用window.location("someFile.php?var1=xyz&...");