在ajax请求期间将参数值发布到多个文件

时间:2013-10-21 04:54:19

标签: php jquery ajax

我将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吗?

1 个答案:

答案 0 :(得分:1)

您有两种选择。

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

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

  3. 如果您选择选项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" ] );
    }
    ?>
    

    重要说明:要使我的示例正常工作,您必须在您的网络文件夹中拥有写入权限。但即使文件写入失败,包含的页面仍会获得发布的变量。