我将myid
传递给url.php页面,并通过ajax请求加载它。
同时我想将myid
发布到除url.php之外的其他文件中。像x.php,y.php。
FB.api('/me?fields=movies,email,name', function(mydata) {
var email=mydata.email;
var json = JSON.stringify(mydata.movies.data);
var a = JSON.parse(json);
$.post('movies_db.php',{'myd':a, name: name, email: email, myid:myid}, function(data)
{
$.ajax({
url:'url.php'
,async: true
,type : 'POST'
,cache: false
,data : 'myid=' + myid //Here I post myid to url.php. How can I post it to other files like x.php , y.php on same moment?
,dataType: 'html'
,success: function(data){
$('body').html(data);
FB.XFBML.parse();
}
}
);
}
);
底线是我想使用当前的user_id
e.i.用户执行登录操作后,在各个页面上显示myid
。
更新
我将变量从index.php
发布到url.php
。
在index.php里面:
$就({
网址:' url.php'
,async:true
,键入:' POST'
,cache:false
,数据:' myid =' + myid //这里我将myid发布到url.php。如何在同一时刻将其发布到x.php,y.php等其他文件?
,dataType:' html'
,success:function(data){}
在url.php中我会回复:
<?php
//sent has value "http://www.paulgraham.com/herd.html"
$url=$_POST['myid'];
?>
现在url.php
假设我有以下情况:
<script>
function funInclude()
{
include "data1.php";
include "data2.php";
}
</srcipt>
那么data1.php和daa2.php这两个都会回复myid
吗?
答案 0 :(得分:1)
您有两种选择。
在第一个ajax调用的成功回调中再放两个ajax调用
在url.php
页面中,只需包含其他两个php页面,它们也将获取变量数据
如果您选择选项2,我建议您在函数调用中执行include以将这些页面的变量与调用页面部分分开
编辑:解释选项#2并将其置于函数调用中:
在PHP中,当您包含文件时,您不仅要“调用”其他页面,还要包含代码,就好像它是当前正在运行的页面的一部分一样。它们将作为一个页面汇编在一起。这可能会导致无法预料的问题,因为page 1
包括page 2
,可能包含与page 2
同名的变量,而page 2
可能会更改该变量。这会导致page 1
上出现意外的变量值。
为了解决这个问题,PHP允许您通过调用函数内的include来(部分地)限制包含页面及其变量的范围。
“calling.php”的示例
<?php
//This included page's variables are accessible as though they were in this "calling.php" page
include "included.php";
function restrictScope()
{
//This page's variables/changes are only accessible inside this function
include "included2.php";
}
http://php.net/manual/en/function.include.php
编辑:完整的工作示例
这是基页:include.php
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="include.php" method="POST">
<input type="hidden" name="myid" value="3" />
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>
<?php
if ( $_SERVER[ "REQUEST_METHOD" ] == "POST" )
{
//Let's call included.php
passOff();
//Now let's check it actually did it
$savedId = ( file_exists( "myid.txt" ) ) ? file_get_contents( "myid.txt" ) : "null";
echo "MyId: " . $savedId;
}
function passOff()
{
include "included.php";
}
?>
这是包含的页面:included.php
<?php
if ( $_SERVER[ "REQUEST_METHOD" ] == "POST" )
{
//Create and write the "myid"
file_put_contents( "myid.txt", $_POST[ "myid" ] );
}
?>
重要说明:要使我的示例正常工作,您必须在您的网络文件夹中拥有写入权限。但即使文件写入失败,包含的页面仍会获得发布的变量。