将参数传递到另一个网页

Posted

技术标签:

【中文标题】将参数传递到另一个网页【英文标题】:Passing parameters to another web page 【发布时间】:2015-02-17 14:25:52 【问题描述】:

我正在使用 Jquery/Ajax API 使用用户在注册帐户时输入的信息来更新相关数据库。成功发送数据后,我需要打开另一个页面,用户可以在其中上传他们的用户照片。我的数据发送到的表单处理 php 页面使用 PDO 函数将最后插入的 id 抓取到我的表 $users_ID_count = $dbh->lastInsertId(); 中。然后它将 $users_ID_count 回显到我在 AJAX 中的成功函数中,我的意图是我可以使用 ID 作为参数打开我的图片上传页面。我似乎无法使用在 URL 中传递的 ID,并且对更好的解决方案持开放态度。

var dataString = 'name1='+ first + '&last1='+ last + '&email1='+ email + '&password1='+ password + '&user1=' + usrname + '&dev=' + dev + '&des=' + des + '&bth=' + bth;

            // AJAX Code To Submit Form. jquery version 
                $.ajax(
                    type: "POST",
                    url: "blog-signup-srvr-4.php",
                    data: dataString,
                    cache: false,
                    success: function(text)
                        window.location.assign('http://localhost/knoxPrograms/knoxville_programmers/blog-signup-propic.php?disatl ='+ text);
                    
                );

下面是 blog-signup-srvr-4.php 很抱歉拖了很久

    if(isset($_REQUEST['name1']) && isset($_REQUEST['last1']) && isset($_REQUEST['email1']) && isset($_REQUEST['password1']) && isset($_REQUEST['user1']) && isset($_REQUEST['dev']) && isset($_REQUEST['des']) && isset($_REQUEST['bth']))
    
    //career type field values
    $dev = $_REQUEST['dev'];
    $des =  $_REQUEST['des'];
    $bth = $_REQUEST['bth'];


    //su form field values
    $firstName = $_REQUEST['name1'];
    $lastName =  $_REQUEST['last1'];
    $emailAddr = $_REQUEST['email1'];
    $usrPass =   $_REQUEST['password1'];
    $userId =    $_REQUEST['user1'];        


    setUpUser($dev, $des, $bth, $dbh, $firstName, $lastName, $emailAddr, $usrPass, $userId, $dbh);



    //initial set up function. Prepare sql statements, bind parameters to users input and send      
    function setUpUser($dev, $des, $bth, $dbh, $first, $last, $email, $pass, $id, $dbh)
    

    $stmt = $dbh->prepare('INSERT INTO users(userName, userPass) VALUES(? , ?)');
    $stmt2= $dbh->prepare('INSERT INTO userinfo(firstName, lastName, email, ID, careerType) VALUES(?,?,?,?,?)');    

    $dbh->beginTransaction();    //the start of paramater binding and execution

    $stmt->bindParam(1, $id);
    $stmt->bindParam(2,$pass);
    $stmt2->bindParam(1,$first);
    $stmt2->bindParam(2,$last);
    $stmt2->bindParam(3,$email);


    //one of the following sends the string 'true' over, the value
    //of the element that sends true over is what is updated in our database

    if($dev == "true")
        $dev = "dev";
        $stmt2->bindParam(5, $dev);
    
    elseif($des == "true")
        $des = "des";
        $stmt2->bindParam(5,$des);
    
    elseif($bth == "true")
        $bth = "bth";
        $stmt2->bindParam(5,$bth);
    

    $stmt->execute();
    $users_ID_count = $dbh->lastInsertId();

    $stmt2->bindParam(4,$users_ID_count); //bind parameter after the first statement has been created and its last id insert is stored

    $stmt2->execute(); //execute after last id inserted is binded to parameter so we may enter it into our database

    $dbh->commit();             
    echo $users_ID_count;

【问题讨论】:

你有控制台记录你的文本值吗?它可能是一个对象,然后它可能类似于 text.XXX 能否添加 blog-signup-srvr-4.php 代码,以便我们查看返回的内容? 【参考方案1】:

也许在您的 ajax 文件中,您可以使用以下用户 ID 创建会话:

<?php session_start(); $_SESSION["userID"] = $users_ID_count; ?>

“blog-signup-propic.php”文件可以通过从该会话中检索用户 ID 开始:

<?php
if(isset($_SESSION["userID"]))  $disatl = $_SESSION["userID"]);  else  $disatl = ""; 
?>

这样你也可以避免url上的参数。此外,一旦您的脚本完成,您可以取消设置该会话:

<?php
unset($_SESSION["userID"]);
?>

最后,将您的 javascript 修改为:

...
success: function(text)
    window.location.assign('http://localhost/knoxPrograms/knoxville_programmers/blog-signup-propic.php');

...

当然,此处显示的变量可能与适用于您的项目的变量不同。但我认为你可以解决这个问题:)

希望对你有帮助...

【讨论】:

我想我在实践中可以被认为是一个 nube,我只是采用非正统的方式自学,大学教授很可能会从一开始就涵盖 $_SESSIONs 但我读了一个教程在它上面,$_SESSION 正是要解决我的问题的方法!非常感谢! @ColinRickels 很高兴它对您有所帮助!快乐编码:)

以上是关于将参数传递到另一个网页的主要内容,如果未能解决你的问题,请参考以下文章

无法将参数传递到另一个重定向网站

试图将三个参数从一个 php 文件传递​​到另一个

如何将最佳参数(使用 GridSearchCV)从管道传递到另一个管道

如何在bash脚本中通过函数调用将参数/参数从一个函数传递到另一个函数[重复]

通过按钮将路由参数传递到另一个页面

C:将可变数量的参数从一个函数传递到另一个函数