我有一个ColdFusion页面,用户可以打开一个模态并查看有关一行数据的更多信息.但是,如果用户在页面上的时间超过默认的20分钟会话超时,则会抛出错误,因为它正在查找会话变量但无法找到它们.我理解如何使用服务器端代码捕获这个,但我似乎无法通过AJAX调用来成功确定会话是否仍然存在.
这是当用户点击按钮打开模态时触发的AJAX代码.基本上它正在检查会话是否与CFC中的函数一起存在.我的问题是它总是返回'有效'.
//this checks if the session is expired
function checkSessionExists() {
$.ajax({
//this is the that has function
url: 'components/Admin.cfc',
//POST method is used
type: "POST",
//pass the data
data: {
method: "checkSessionExists"
},
async: false,
success: function(response) {
//$('#loading').hide();
var obj = $.trim(response);
if (obj == 'expired') { //it's never expired
alert('Sorry, your session has expired.')
window.location.href = "logout.cfm";
return false;
}
else{
}
},
error: function(jqXHR, exception) {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
});
return false;
} …Run Code Online (Sandbox Code Playgroud) 我需要从结构数组中创建一个查询对象.该阵列有大约200个键,阵列内部的结构在名称,大小和深度上有所不同.这是一个节点的样子:

我已经让它适用于数组[#i] .adGroupId和数组[#i#].userStatus但我需要在将结构值添加到查询之前检查它是否存在.criterion.text例如并不总是在结构中,所以我需要检查,但不知道如何.这是迄今为止的代码,但它总是跳过criterion.text和bids.maxCpc.amount.microAmount.
<cfset vColumns = "AdGroupID,KeywordText,Status,MaxCPC" />
<cfset vColumnValue = "AdGroupID,criterion.text,userStatus,bids.maxCPC" />
<cfset loopnum = 1>
<cfset myquery = QueryNew(vColumns) >
<cfloop array="#aKeywordsAll#" index="i">
<cfset temp = QueryAddRow(myquery, 1)>
<cfset loopNum2 = 1>
<cfloop list="#vColumnValue#" index="j">
<cfif structKeyExists(aKeywordsAll[loopnum],j)>
<cfset QuerySetCell(myquery, listGetAt(vColumns, loopNum2), aKeywordsAll[loopnum][j])>
<cfelse>
<cfset QuerySetCell(myquery, listGetAt(vColumns, loopNum2), "test")>
</cfif>
<cfset loopNum2++ />
</cfloop>
<cfset loopnum++ />
</cfloop>
Run Code Online (Sandbox Code Playgroud)
这是创建的查询对象.它说"测试",但希望它能给出值:

我有一个完美的插入工作,但需要获取它刚刚插入的行的值.不知道我怎么做到这一点.试过一些东西......没用.这是我的INSERT:
//method to insert data
private void insertNewProject()
{
using (dbPSREntities5 context = new dbPSREntities5())
{
//Create a new instance of the tbProject object
tbProject proj = new tbProject {
//Add new values to each fields
ProjectContactInfo = txtContactPhone.Text,
refDepartmentID = Convert.ToInt32(ddlDepartments.SelectedValue)
};
context.tbProjects.AddObject(proj);
context.SaveChanges();
id = (int)command.ExecuteScalar; <--- something like this but this doesn't work.
}
}
Run Code Online (Sandbox Code Playgroud) 我想根据userName变量显示不同的下拉选项,但不知道如何执行此操作.这是代码:
<form id="frmViewRequest" runat="server">
<div class="widget-content">
<div class="padd"><div class="row">
<div class="col-md-2">
<% if (userName == "jpublic"){
<asp:DropDownList class="form-control" runat="server" AutoPostBack="true" ID="ddlChangeStatus">
<asp:ListItem Text="Under Review" value="1" />
</asp:DropDownList>
}
else{
<asp:DropDownList class="form-control" runat="server" AutoPostBack="true" ID="ddlChangeStatus">
<asp:ListItem Text="Under Review" value="1" />
<asp:ListItem Text="Approved" value="2" />
<asp:ListItem Text="Rejected" value="3" />
<asp:ListItem Text="Logged" value="4" />
<asp:ListItem Text="Completed" value="5" />
</asp:DropDownList>
}
%>
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果是这样,我将如何根据userName显示不同的ListItem?谢谢!
下面的代码将选择表中的所有行,但我只想选择传递给方法的行的id.我已经尝试了多种方式,现在开始新鲜,看看我是否能让它发挥作用.任何帮助表示赞赏.
这是我的代码:
[WebMethod]
public static string getProjectByID(int id)
{
using (dbPSREntities4 myEntities = new dbPSREntities4())
{
var thisProject = myEntities.tbProjects.ToList();
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(thisProject);
return json;
}
}
Run Code Online (Sandbox Code Playgroud) asp.net ×3
c# ×3
coldfusion ×2
ajax ×1
asp.net-mvc ×1
coldfusion-9 ×1
jquery ×1
linq ×1
session ×1