欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

请教php取到的数据集后,如何用到javascript

程序员文章站 2022-05-31 08:33:43
...
在练习那种php和HTML混合的页面,php从数据库取出数据后循环输出,那么链接的javascript页面如何获取那个每个数据相对应的id值,是用来栏目分类的
var fi= document.getElementById(lanmu).value;

php页面里


alert只显示出fi ,不能显示相应value里的id值


回复讨论(解决方案)

页面还没有加载完,dom对象没有初始化, 所以document.getElementById(lanmu).value;
如果这里的lanmu不是js变量的话就加上引号document.getElementById(‘lanmu').value

建议把

window.load=function(){     var fi= document.getElementById(lanmu).value;}


或者用JQuery更方便:
  

另外想请教一下
javascript 调用document.getElementsById(lanmu).value; 再alert根本没反应
document.getElementsByName(lanmu),alert显示undefine
这是什么情况?

页面还没有加载完,dom对象没有初始化, 所以document.getElementById(lanmu).value;
如果这里的lanmu不是js变量的话就加上引号document.getElementById(‘lanmu').value

建议把

window.load=function(){     var fi= document.getElementById(lanmu).value;}


或者用JQuery更方便:
    

第一种可以,但是原来用的javascript代码是否需要全部改成jquery,
加入jquery后,一点击 php页面,就弹出那个栏目的id值,问题是如何将id值转成javascript中的变量
试着这样写
$(function(){
var fid=$('#fi').val();
});

反复弹出提示框,其实想用fid变量,放到url传出去

说错了,是第二种可以

看不懂你打算做什么
你描述的东西,在你的代码中都不存在

showtype.php:用来显示form表单,表单里有一级和相对应的二级栏目名称







include ('conn/conn.php');
$sqlf ="select * from tb_class where supid=0";//选择父类数据
$sqlz ="select * from tb_class where supid!=0";
$shujuf=mysql_query($sqlf);

//$shujuz=mysql_query($sqlz);
?>









?>








include ('conn/conn.php');
//$sqlz ="select * from tb_class where supid0";
$shujuz=mysql_query($sqlz);
while ($rows2=mysql_fetch_array($shujuz)){
if($rows2['supid']==$rows1['id']){

?>






}}}
?>

查看商品类别
父类:
子类:


javascript:用来检测上一个表单,设置xmlhttp的url,传到changtype.php
function modifytype(key){
var nm = 'moditype1';

//var fid = document.getElementById(fi).value;//这样不行
//var fi='$fi';//这样不行
//var fid=$('#fi').val();//这样不行
var names = document.getElementById(nm).value;


if(names == ""){
alert('请填写类别名称');
document.getElementById(nm).focus();
return false;
}
var url = "changetype.php?action=m&names="+names+"&key="+fid;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = check;
xmlhttp.send(null);
}
function delbigtype(key){

if(confirm("您要删除的是一级类,确定要删除吗")){
var url = "changetype.php?action=bd&key="+fid;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = check;
xmlhttp.send(null);
}else{
return false;
}
}
function delsmalltype(key){

if(confirm("确定要删除选中的项目吗?一旦删除将不能恢复!")){
var url = "changetype.php?action=sd&key="+fid;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = check;
xmlhttp.send(null);
}else{
return false;
}
}


function check(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
var msg = xmlhttp.responseText;
if(msg == "1"){
alert('类名重复');
}else if(msg == "2"){
alert('操作失败!');
}else (msg == "3"){
alert('操作成功');
location='showtype.php';
} else if(msg == "4"){
alert('该大类有子类,不能删除');
}else (msg == "0"){
alert('未知错误!'+'\n错误代码:'+msg);
}
}
}
}

还有一个是changtype.php,用来修改添加栏目

/**********************************
$reback说明:
0、未知错误
1、类名重复
2、操作失败
3、操作成功
4、有二级分类
***********************************/
$conn=mysql_connect("localhost","root","");
mysql_select_db("db_database22",$conn);
mysql_query("set names utf8");
$action = $_GET['action'];//获取JavaScript文件中action
$reback = '';//建立返回变量
if($action == 'm'){//如果动作值为m??修改栏目名称
$names = $_GET['names'];
$key = $_GET['key'];
$sql = "select * from tb_class where name = '$names'";
$rst = $conn->execute($sql);//执行选择数据库
if($rst->RecordCount() == 1){//如果选择成功
$reback = '1';//返回值为1
}else{
$updatesql = "select * from tb_class where id = ".$key;
$updaterst = $conn->execute($updatesql);
$upd = array();
$upd["id"] = $key;
$upd["name"] = $names;
$update = $conn->GetUpdateSQL($updaterst,$upd);//修改数据库
if($conn->execute($update) == false){//如果修改成功
$reback = '2';//返回值为2
}else{
$reback = '3';//返回值为3
}
}
}else if($action == 'sd'){//如果动作值为sd??删除子类栏目
$key = $_GET['key'];
$delsql = "delete from tb_class where id = ".$key;
if($conn->execute($delsql) == false){
$reback = '2';
}else{
$reback = '3';
}
}else if($action == 'bd'){//如果动作值为bd??删除父类栏目
$key = $_GET['key'];
$sql = "select * from tb_class where supid = ".$key;
$rst = $conn->execute($sql);
if($rst->RecordCount() >= 1){
$reback = '4';
}else{
$delsql = "delete from tb_class where id = ".$key;
if($conn->execute($delsql) == false){
$reback = '2';
}else{
$reback = '3';
}
}
}else{
$reback = '0';
}
echo $reback;
?>

基本是书上的例子,原来是用smarty模板引擎的,想改成不用smary的,发现直接改不行
现在有几个问题:
1、 document.getElementById(fi).value 取不到值,点修改没反应。在input隐藏域那块加个onbur后,弹出提示框,只有一个1
也就是“电子类"的数据表id ,刷新一次都出现这个,点击其他栏目的修改键,也是1,不显示这个栏目id.如果将那个inpu隐藏样式改为不隐藏,则可以显示所有栏目所对应id.说明php页面已经取到每个栏目的id值了,但javascript 页面取不到input隐藏域的value值,也就是的值。

2、第一个PHP文件,父类修改后面的原来是 onclick="javascript:modifytype({$key} ),这是什么意思,{$key}是smarty模板变量吧,这个应该怎么改?
3、changtype.js的function check() 不起作用怎么回事?类名重复等提示都没有

AJAX+JSON,用JQUERY很方便,直接支持

用了jquery可以取得值,用each遍历查询。问题现在每次点击某一个按键,刷新一次提示框自动弹出来,循环显示不同的值。本来想按哪一项旁边的键就弹出相对应的值,而不是自动提示,现在不知道怎么设置。
$("button").click(function(){
$("input:hidden").each(function(){
alert($(this).val())