如何在javascript中嵌入php会话变量
我有一个动态表,它支持对数据库执行CRUD操作。 登录后,用户被定向到index.php,在这里显示一个表,其中的值存储在数据库表“ajaxtable”中。我使用外键连接了“ajaxtable”表和“members”表如何进一步修改代码,以便js文件可以从会话变量获取用户的电子邮件,而不是从动态表的输入字段发布。 my index.php:如何在javascript中嵌入php会话变量,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,我有一个动态表,它支持对数据库执行CRUD操作。 登录后,用户被定向到index.php,在这里显示一个表,其中的值存储在数据库表“ajaxtable”中。我使用外键连接了“ajaxtable”表和“members”表如何进一步修改代码,以便js文件可以从会话变量获取用户的电子邮件,而不是从动态表的输入字段发布。 my index.php: <?php session_start(); $fname=$_SESSION['mail']; ?> <html> <
<?php
session_start();
$fname=$_SESSION['mail'];
?>
<html>
<title>Addressbook</title>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"> </script>
<link rel="stylesheet" type="text/css" href="crudstyle.css" />
</head>
<body bg color="">
<div id="mhead"><h2>Your Adressbook</h2></div>
<div id="note"> <span> your addressbook is connected to our servers :) </span></div>
<?php
echo $fname; // it echoes the login email correctly here
?>
<table id='demoajax' cellspacing="0">
</table>
<script type="text/javascript" src="script.js"></script>
</body>
</html>
//我希望从会话变量中获取此字段
var lname = $("input[name='"+field_name[1]+"']");
var domain =$("input[name='"+field_name[2]+"']");
var email = $("input[name='"+field_name[3]+"']");
if(validate(fname,lname,domain,email)){
data = "fname="+fname.val()+"&lname="+lname.val()+"&domain="+domain.val()+"&email="+email.val()+"&actionfunction=saveData";
$.ajax({
url:"DbManipulate.php",
type:"POST",
data:data,
cache: false,
success: function(response){
if(response!='error'){
$('#demoajax').html(response);
createInput();
}
}
});
}
else{
return;
}
});
我的DbManipulate.php文件的一部分:
function saveData($data,$con){
$fname = $con->real_escape_string($data['fname']);
//上述字段也应在此操作期间从会话变量中获取
$lname = $con->real_escape_string($data['lname']);
$domain = $con->real_escape_string($data['domain']);
$email = $con->real_escape_string($data['email']);
$sql = "insert into ajaxtable(firstname,lastname,domain,email) values('$fname','$lname','$domain','$email')";
if($con->query($sql)){
showData($data,$con);
}
else{
echo "error";
}
}
function showData($data,$con){
$sql = "select * from ajaxtable JOIN member ON member.email=ajaxtable.firstname WHERE member.email=$fname";
$data = $con->query($sql);
$str='<tr class="head"><td>user email</td><td>contact name</td><td>contact number</td><td>contact Email</td><td></td></tr>';
if($data->num_rows>0){
while( $row = $data->fetch_array(MYSQLI_ASSOC)){
$str.="<tr id='".$row['id']."'><td>".$row['firstname']."</td><td>".$row['lastname']."</td><td>".$row['domain']."</td><td>".$row['email']."</td><td>
<input type='button' class='ajaxedit' value='Edit'/> <input type='button' class='ajaxdelete' value='Delete'></td></tr>";
}
}else{
$str .= "<td colspan='5'>No Data Available</td>";
}
echo $str;
}
$lname=$con->real_escape_字符串($data['lname']);
$domain=$con->real_escape_字符串($data['domain']);
$email=$con->real_escape_字符串($data['email']);
$sql=“插入ajaxtable(firstname、lastname、domain、email)值(“$fname”、“$lname”、“$domain”、“$email”)”;
如果($con->query($sql)){
showData($data$con);
}
否则{
回声“错误”;
}
}
函数showData($data$con){
$sql=“选择*从成员上的ajaxtable加入成员。电子邮件=ajaxtable.firstname,其中成员。电子邮件=$fname”;
$data=$con->query($sql);
$str='user emailcontact name contact numbercontact Email';
如果($data->num\u rows>0){
而($row=$data->fetch_数组(MYSQLI_ASSOC)){
$str.=“”.$row['firstname']。“”.$row['lastname']。“”.$row['domain']。“”.$row['email']
";
}
}否则{
$str.=“无可用数据”;
}
echo$str;
}
我建议您稍微重构一下代码。
若我是你们,我不会在函数showData($data,$con)中创建表;
相反,我将以jSON的形式返回结果,然后在javascript中,您将可以作为对象访问它。
所以
在javascript中:
$.getJSON("YOUR_URL", {
dir: dir,
tagmode: "any",
format: "json"
}).done(function (data)
{
var items = [];
$.each(data.items, function (key, val)
{
console.log(val); // here you can see in console values of val and create table rows with those values
var tmp_item = "" HERE CREATE YOUR TABLE ROWS val.id, val.first_name
items.push(tmp_item);...
}
一旦您在data.items对象中获得了所需的所有数据,就可以使用jQuery(append,appendTo…)轻松地将它们附加到页面上
希望有帮助 您可以将
script.js
重命名为script.js.php
并加载它<代码>。然后,如果我理解您的问题,您可以使用var fname='
,这是有效的扩展吗?所有3个文件中都需要进行一些更改,我希望您提出建议。用户甚至不能看到“fname”来进行任何更改。它应该自己发布存储在会话变量“mail”中的电子邮件。在我当前的代码中,它是一个用户可编辑的字段。不,不建议使用它,但这是最懒的方法。如果不想显示,请使用ajax。您可以在此处查看一些技巧:
function getData($data, $conn)
{
$sql = "select * from ajaxtable JOIN member ON member.email=ajaxtable.firstname WHERE member.email=$fname";
$data = $con->query($sql);
if($data->num_rows>0){
while( $row = $data->fetch_array(MYSQLI_ASSOC)){
$result[] = $row;
}
return json_encode($result);
}
$.getJSON("YOUR_URL", {
dir: dir,
tagmode: "any",
format: "json"
}).done(function (data)
{
var items = [];
$.each(data.items, function (key, val)
{
console.log(val); // here you can see in console values of val and create table rows with those values
var tmp_item = "" HERE CREATE YOUR TABLE ROWS val.id, val.first_name
items.push(tmp_item);...
}