0

我正在传递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_idei 。myid

更新

我将变量从 发布index.phpurl.php。inside index.php: $.ajax({ url:'url.php' ,async: true ,type : 'POST' ,cache: false ,data : '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对吗?

4

1 回答 1

1

你有两个选择。

  1. 在第一个 ajax 调用的成功回调中再放两个 ajax 调用

  2. url.php页面中,只需包含其他两个 php 页面,它们也将获取变量数据

如果您选择选项 2,我建议您在函数调用中执行包含,以将这些页面的变量与调用页面部分分开

编辑:解释选项 #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" ] );
}
?>

重要提示:要使我的示例正常工作,您必须在 Web 文件夹中具有写入权限。但是即使文件写入失败,包含的页面仍然会获取发布的变量。

于 2013-10-21T05:11:24.110 回答