我在这里读到了一些关于将值从JS存储到PHP变量的问题的帖子,大多数评论都说使用AJAX。
AJAX和JS代码都可以用来将JS变量值存储到PHP变量中,但是有人能解释为什么大多数人建议使用AJAX吗?或者如果我使用AJAX而不是JS来存储的值,我有什么优势
感谢
如果不使用AJAX,就无法从javascript/jQuery存储PHP值。
在DOM被呈现之后,将不会运行任何额外的PHP。就这样,一切都结束了。为了向服务器发送额外的数据,您有两种选择:(1)将表单发布到另一个PHP文件,该文件将发送键入表单元素的数据,并更改/刷新当前页面或(2)使用AJAX。
AJAX是一种与单独的PHP页面通信的方式,在不刷新/更改用户所在页面的情况下来回发送数据
$.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的附加链接:
动态下拉框?
使用无显示按钮防止Jquery表单提交页面加载
当数据到达指定的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