使用Javascript和ColdFusion链接备注和注释
使用ColdFusion、Access和Javascript,我已经能够设置一个程序,当你按下一个按钮时,它会给你一张照片。然后我使用JOIN方法链接数据库中的两个工作表。现在我要做的是加入到程序中,这样当我点击一个图像时,它会通过图像id显示与该图像相关的备注。有人能帮我显示与每个图像相关的备注吗使用Javascript和ColdFusion链接备注和注释,javascript,ms-access,coldfusion,Javascript,Ms Access,Coldfusion,使用ColdFusion、Access和Javascript,我已经能够设置一个程序,当你按下一个按钮时,它会给你一张照片。然后我使用JOIN方法链接数据库中的两个工作表。现在我要做的是加入到程序中,这样当我点击一个图像时,它会通过图像id显示与该图像相关的备注。有人能帮我显示与每个图像相关的备注吗 <!DOCTYPE html> <html> <cfquery datasource="AccessTest" name="qTest">
<!DOCTYPE html>
<html>
<cfquery datasource="AccessTest" name="qTest">
SELECT Account, Image, Image_ID
FROM PictureDB
</cfquery>
<cfquery datasource="AccessTest" NAME=qtest2>
SELECT *
FROM CommentsDB AS C
INNER JOIN PictureDB AS P
ON C.Image_ID = P.Image_ID
</cfquery>
<script src="http://code.jquery.com/jquery-2.0.3.js"> </script>
<script>
$(document).ready(function(){
var images = {
<cfloop query="qTest">
"<cfoutput>#qTest.Image_ID#</cfoutput>": "<cfoutput>#qTest.Image#</cfoutput>",
</cfloop>
};
$("button").click(function(event){
event.preventDefault();
var id = $(this).data("id");
var src = images[id];
$("#theImage").attr("src", src).removeClass("hide");
});
});
</script>
<div id="div1">
<h2>Display Image</h2>
</div>
<cfoutput query="qTest">
<button data-id="#qTest.Image_ID#">#qTest.Account# </button>
</cfoutput>
<img id="theImage" class="hide">
</html>
在我做了更改之后,我有了新的代码
<!DOCTYPE html>
<html>
<cfquery datasource="AccessTest" name="qTest">
SELECT Account, Image, Image_ID
FROM PictureDB
</cfquery>
<cfquery datasource="AccessTest" NAME=qtest2>
SELECT *
FROM CommentsDB AS C
INNER JOIN PictureDB AS P
ON C.Image_ID = P.Image_ID
</cfquery>
<script src="http://code.jquery.com/jquery-2.0.3.js"> </script>
<script>
$(document).ready(function(){
var images = {
<cfloop query="qTest">
"<cfoutput>#qTest.Image_ID#</cfoutput>": "<cfoutput>#qTest.Image#</cfoutput>",
</cfloop>
};
var descs= {
<cfloop query="qtest2">
"<cfoutput>#qtest2.Image_ID#</cfoutput>": "<cfoutput>#qtest2.Remarks#</cfoutput>",
</cfloop>
};
$("button").click(function(event){
event.preventDefault();
var id = $(this).data("id");
var src = images[id];
var desc = descs[id];
$("#theImage").attr("src", src).removeClass("hide");
$("#theDescription").html(desc).removeClass("hide");
});
});
</script>
<body>
<div id="div1">
<h2>Display Image</h2>
</div>
<cfoutput query="qTest">
<button data-id="#qTest.Image_ID#">#qTest.Account# </button>
</cfoutput>
<img id="theImage" class="hide">
<div id="theDescription" class="hide">
</html>
</body>
查看源代码
因此,只需扩展已经包含的内容,也包括描述。有更好的方法可以做到这一点,我宁愿使用一个结构数组和一个查询,而不是两个,但这可能是基于当前代码实现的最简单的方法,而无需全部重写 还要注意的是,我没有使用我使用过的,这样你就不用在循环中用cfoutput包装我们的所有内容了
<!DOCTYPE html>
<html>
<script src="http://code.jquery.com/jquery-2.0.3.js"> </script>
<script>
$(document).ready(function(){
var images = {
"1": "Test1.png#Test1.png#",
"2": "Test2.png#Test2.png#",
"3": "Test3.png#Test3.png#",
"4": "Test4.png#Test4.png#",
"5": "Test5.png#Test5.png#",
"6": "Test6.png#Test6.png#",
};
var descs= {
"5": "Test5",
"6": "Test6",
"1": "B Test",
"1": "A Test",
"2": "Test2",
"3": "Test3",
"4": "Test4",
};
$("button").click(function(event){
event.preventDefault();
var id = $(this).data("id");
var src = images[id];
var desc = descs[id];
$("#theImage").attr("src", src).removeClass("hide");
$("#theDescription").html(desc).removeClass("hide");
});
});
</script>
<body>
<div id="div1">
<h2>Display Image</h2>
</div>
<button data-id="1">Dunblane </button>
<button data-id="2">Main Campus </button>
<button data-id="3">Law School </button>
<button data-id="4">New Mexico Ave </button>
<button data-id="5">Soccer Field </button>
<button data-id="6">Capital Hall </button>
<img id="theImage" class="hide">
<div id="theDescription" class="hide">
</html>
</body>
最新答复:
我将使用一个查询同时获取所有图像和备注。这会使javascript更加复杂,这并不理想,但这种方法应该可以工作。javascript数组和结构中最后一项上的尾随逗号将在IE中引发错误,但我将其作为一个练习留给您自己,以确定如何使用计数器来确定是否需要添加逗号
然后我们可以使用分组输出,这样我们就可以得到所有的注释。我把它们放在这里作为数组,但也可以是字符串
还有一个问题。你知道为什么只有第一个链接到图片的注释会出现吗?你能给我们看一下生成的javascript吗,即你页面上的查看源代码,而不是CFML代码吗?我做了一个测试并做了注释。B在第一个按钮下测试,Dunblane。这就出现了。然后当我添加了一个测试。它取代了B试验。它似乎只显示按字母顺序排列的第一个。啊,所以你对ID为1的图像有两个注释。。。在这种情况下,你想做什么;请注意,与其构建自己的JSON字符串,不如使用序列化JSON。它有一些怪癖,但在这种情况下应该没问题。
var descs= {
<cfoutput query="qtest2">
"#qtest2.Image_ID#": "#qtest2.Remarks#",
</cfoutput>
};
var src = images[id];
var desc = descs[id];
$("#theImage").attr("src", src).removeClass("hide");
$("#theDescription").html(desc).removeClass("hide");
<img id="theImage" class="hide">
<div id="theDescription" class="hide"></div>
<cfquery datasource="AccessTest" name="qTest">
SELECT P.Account, P.Image, P.Image_ID, C.Remarks
FROM PictureDB AS P
INNER JOIN CommentsDB AS C
ON C.Image_ID = P.Image_ID
ORDER BY P.Image_ID
</cfquery>
var images = {
<cfoutput query="qTest" group="Image_ID">
"#qTest.Image_ID#": {
"image": "#qTest.Image#",
"remarks": [
<cfoutput>
"#qTest.Remarks#",
</cfoutput>
]
},
</cfoutput>
};
$("button").click(function(event){
event.preventDefault();
var id = $(this).data("id");
var src = images[id].image;
var desc = images[id].remarks.toString();
$("#theImage").attr("src", src).removeClass("hide");
$("#theDescription").html(desc).removeClass("hide");
});