请教php取到的数据集后,如何用到javascript
程序员文章站
2024-02-10 22:02:40
...
在练习那种php和HTML混合的页面,php从数据库取出数据后循环输出,那么链接的javascript页面如何获取那个每个数据相对应的id值,是用来栏目分类的
var fi= document.getElementById(lanmu).value;
php页面里
alert只显示出fi ,不能显示相应value里的id值
或者用JQuery更方便:
或者用JQuery更方便:
第一种可以,但是原来用的javascript代码是否需要全部改成jquery,
加入jquery后,一点击 php页面,就弹出那个栏目的id值,问题是如何将id值转成javascript中的变量
试着这样写
$(function(){
var fid=$('#fi').val();
});
反复弹出提示框,其实想用fid变量,放到url传出去
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() 不起作用怎么回事?类名重复等提示都没有
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表单,表单里有一级和相对应的二级栏目名称
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())