将参数传递到另一个网页
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 很高兴它对您有所帮助!快乐编码:)以上是关于将参数传递到另一个网页的主要内容,如果未能解决你的问题,请参考以下文章
如何将最佳参数(使用 GridSearchCV)从管道传递到另一个管道