我一直在阅读一些关于将JS格式存储到PHP变量的问题的帖子,大多数评论都说使用AJAX。
AJAX和JS代码都可用于将JS变量值存储到PHP变量中,但有人可以解释为什么大多数人建议使用AJAX吗?或者如果我使用AJAX而不是JS存储该值
,我会有什么优势感谢
答案 0 :(得分:0)
使用AJAX,不能使用从javascript / jQuery 存储PHP值。
渲染DOM后,不会运行其他PHP。就是这样,一切都完成了。为了将更多数据发送到服务器,您有两种选择:(1)将表单发布到另一个PHP文件,该文件将输入的数据输入到表单元素中,并将更改/刷新当前页面。或(2)使用AJAX。
AJAX是一种与单独的PHP页面进行通信,来回传送数据,而无需刷新/更改用户所在页面的方式。 AJAX代码块看起来像这样:
$.ajax({
type: 'post',
url: 'ajax.php',
data: 'varName=' +varSomething,
success: function(d){
if (d.length) alert(d);
}
});
或
$.ajax({
type: 'post',
url: 'ajax.php',
data: 'varSomename=' +varValue
}).done(function(){
//success function
});
从PHP发回的数据在AJAX代码块的success
函数(仅在那里)中被接收,在那里它可以被操作和/或注入到DOM中,如下所示:
$.ajax({
type: 'post',
url: 'ajax.php',
data: 'thevar=' +theval,
success: function(d){
$('#someDIV').html(d);
}
});
这是AJAX的一些额外链接:
Prevent Page Load on Jquery Form Submit with None Display Button
当数据到达指定的PHP文件(上例中的ajax.php)时,您可以通过$_POST[]
变量获取该数据:
<?php
$summat = $_POST['someVarname'];
//To send data back to the AJAX success function, you just echo it:
$out = '<div style="font-size:3rem;color:blue;">';
$out .= $summat;
$out .= '</div>';
echo $out
现在您拥有本地PHP变量中的数据。 PHP文件执行完成后,此变量将不复存在。
要保留PHP变量,请使用$ _SESSION超级变量。要使用$ _SESSION变量,必须将session_start()
添加到PHP页面的顶部:
<?php
session_start();
$_SESSION['summat'] = $_POST['someVarname'];
//Now you have a permanent variable on the server, associated with this user's PHP session