use*_*701 0 html javascript coldfusion yui
我有一个带有2个按钮的简单YUI对话框 - 接受和拒绝.我想在点击每个按钮时将ColdFusion代码与JavaScript代码一起调用.当我将CF代码与JS代码一起引入时,不幸的是,每个函数中的CF代码都会被触发.
所有代码如下所示:
<script type="text/javascript">
function displayForm() {
YAHOO.namespace("example.container");
if (!YAHOO.example.container.Form) {
YAHOO.example.container.Form = new
YAHOO.widget.SimpleDialog("Form", {
modal: true,
icon: YAHOO.widget.SimpleDialog.ICON_WARN,
visible: false,
fixedcenter: true,
constraintoviewport: true,
width: "500px",
role: "alertdialog",
draggable: false,
buttons: [ { text:"Accept", handler:handleAccept, isDefault:true }, { text:"Decline", handler:handleDecline} ]
});
YAHOO.example.container.Form.setHeader("Info");
YAHOO.example.container.Form.setBody("Body");
YAHOO.example.container.Form.render(document.body);
}
YAHOO.example.container.Form.show();
}
function handleAccept() {
this.cancel();
<CFQUERY name="UpdTable" datasource="test>
UPDATE t
set a = '1'
where b = '1'
</CFQUERY>
}
function handleDecline() {
this.cancel();
<CFQUERY name="UpdTable" datasource="test>
UPDATE t
set a = '2'
where b = '1'
</CFQUERY>
}
displayForm();
</script>
Run Code Online (Sandbox Code Playgroud)
问题是当handleAccept()被自动触发时,handleDecline()CF代码被触发,所以我在数据库中以a ='2'结束,而不是a ='1'.
有解决方法或简单的解决方案吗?理想情况下,我不想使用JS重定向.
当浏览器请求页面时执行ColdFusion代码.也就是说,当代码被发送到浏览器时,执行两个coldfusion cfquery(因此每当有人用上面的代码查看页面时,就会执行这两个查询).这就是ColdFusion的工作原理:
您的问题发生在4. ColdFusion代码不再存在!(查看要查看的页面的源代码)ColdFusion代码已在第2阶段处理回来,并且未发送到浏览器.
那么你如何解决问题呢?好吧,由于ColdFusion处理发生在页面请求之后,您需要请求页面.因为你在服务器上不断变化的数据,你会想要做一个帖子,看到http://developer.yahoo.com/yui/examples/connection/post.html做后与YUI连接的例子经理.
为简单起见,有两个页面,一个是请求接受,另一个是拒绝.在页面中,只需执行相关的CFQUERY即可.现在,在handleAccept和handleRequest函数中,请像上面的YUI连接管理器示例中那样请求这些页面.例如.
var callback =
{
success: function(o){},
failure: function(o){},
argument: []
};
var request = YAHOO.util.Connect.asyncRequest('POST', "accept.cfm", callback, "");
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
330 次 |
最近记录: |