在js中定义一个变量,在PHP中怎么获取该变量?(在一个页面)
回复内容:
在js中定义一个变量,在PHP中怎么获取该变量?(在一个页面)
JS是前端,PHP是后端,后端PHP要获取前端JS的变量,那前端JS可以通过AJAX传输数据给后端PHP.比如登录页面login.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <code><?php if (!defined( 'APP_ROOT' )) define( 'APP_ROOT' , './' );
require APP_ROOT. 'include/common.php' ;
if (isset( $_GET [ 'action' ]) && $_GET [ 'action' ]=== 'login' ) {
if (isset( $_POST [ 'name' ])
&& isset( $_POST [ 'pass' ])
&& $_POST [ 'name' ]=== 'ele'
&& $_POST [ 'pass' ]===123) {
$ret [ 'num' ] = 0;
$ret [ 'txt' ] = '登录成功' ;
echo json_encode( $ret );
exit ();
} else {
$ret [ 'num' ] = 1;
$ret [ 'txt' ] = '登录失败' ;
echo json_encode( $ret );
exit ();
}
}
?>
<?php
require 'header.php' ;
?>
<?php
?>
<script src= "<?php%20echo%20%24app%5B'theme_dir'%5D;%20?>/js/jquery.js" ></script>
<script>
$( '.con' ).on( 'click' , '.login' , function (){
$(this).text( '正在登录' );
var context = this;
$.ajax(
url: 'login.php?action=login' ,
type: 'POST' ,
data: 'name=' +$( '.name' ).val()+ '&pass=' +$( '.pass' ).val(),
success: function (data){
var obj = $.parseJSON(data);
console.log(obj);
if (obj.num==0) {
$(context).text(obj.txt);
setTimeout( function (){
window.location.href = '/' ;
}, 1000);
} else {
$(context).text(obj.txt);
setTimeout( function (){
$(context).text( '登录' );
}, 1000);
}
}
);
});
</script>
<?php require 'footer.php' ;
?></code>
|
Salin selepas log masuk
js中通过post提交到后台:
1 2 3 4 | <code> var data = {
'param' : xxx
};
$.post(url,data,callback)</code>
|
Salin selepas log masuk
php后台接受数据(此处基于thinkPHP):
1 | <code> $data = I( 'post.param' )</code>
|
Salin selepas log masuk
前后台数据通讯用get或post就行了,js中的直接走ajax
$__POST[]
要么AJAX,要么就PHP在页面上输出变量值,JS再去获取
js 代码 ajax 推送到 test.php文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <code> var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp= new XMLHttpRequest();
}
else
{
xmlhttp= new ActiveXObject( "Microsoft.XMLHTTP" );
}
xmlhttp.onreadystatechange= function ()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
} else {
}
}
xmlhttp.open( "GET" , "test.php?id=10" ,true);
xmlhttp.send(); </code>
|
Salin selepas log masuk
php 文件
1 2 3 | <code> if (isset( $_GET [ 'id' ])){
echo '前台js推送过来的变量为:' . $_GET [ 'id' ];
}</code>
|
Salin selepas log masuk
如果是提交表单的话,好吧 ,其实大部分是将js里面的数据绑定在一个html的input中,将这个input隐藏起来,然后提交表单的时候就可以一起提交过去了~
好像大家都没有理解楼主的意思,据我所知,在不提交的情况下是实现不了吧,不过反过来js可以获取PHP输出的值。