这就是我想要做的事情:
提交HTML表单时,表单数据将传递给JavaScript进行一些计算,然后将表单数据和结果(JavaScript计算)传递给PHP,以便将数据保存到数据库中。
现在,我知道如何将表单数据单独传递给JavaScript(或)PHP。但是如何同时将数据传递给它们?以及如何将JavaScript数据传递给PHP?
另外,我是否采取了错误的方式?
答案 0 :(得分:3)
“我希望使用客户端以尽可能减少服务器成本的效果”这样做不是最好的理由,如果计算不是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);
}
});
});
答案 1 :(得分:1)
为什么不在PHP端进行必要的计算呢?它更容易,让您头疼,确保数据不被篡改等。数据已经传递到那里。
无论如何 - 您需要让javascript监控表单并在用户完成时运行计算。你可以:
答案 2 :(得分:0)
你可以使用AJAX方法。 $.ajax()
或$.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&...");