2013-07-18 3 views
0

У меня есть страница, которая печатает массив с некоторой информацией на экране из переменной сеанса (session.stufailedarray). В верхней части страницы есть ссылка, чтобы экспортировать информацию в Excel. Когда я пытаюсь это сделать (в Firefox, IE и Chrome), он отлично работает. Но пользователи продолжают сообщать мне, что они получают сообщение об ошибке: «Элемент stufailarray undefined is session». Я знаю, что переменная есть, потому что она просто печатала ее на экране, и я вижу ее в отладке. Почему это происходит и только иногда?coldfusion 9 variable undefined in session

код, который генерирует сообщение об ошибке:

<cfset ind=0> 
<cfset anArray=arrayNew(2)> 
<cfloop array="#session.stufailarray#" index="k"> 
    <cfset ind+=1> 
    <cfset session.failed=find("UPDATE FAILED: ", "#k#")> 
    <cfset session.rrr=REFind("\d{9,9}", "#k#")> 
    <cfset idno=mid("#k#", REFind("\d{9,9}", "#k#"), 9)> 
    <cfset failed=mid("#k#", Refind("UPDATE FAILED: ", "#k#"), Len(#k#)-(Refind("UPDATE FAILED: ", "#k#")))> 
    <cfset anArray[ind][1]=#idno#> 
    <cfset anArray[ind][2]=#failed#> 
</cfloop> 

<!--- Set content type. ---> 
<cfcontent type="Application/vnd.ms-excel"> 
<cfheader name="Content-Disposition" value="filename=load_status.xls"> 

<cfoutput> 
    <table cols=2 border=1> 
    <cfloop from="1" to ="#ArrayLen(anArray)#" index="row"> 
     <tr> 
     <td>#anArray[row][1]#</td> 
     <td>#anArray[row][2]#</td> 
     </tr> 
    </cfloop> 
    </table> 
</cfoutput> 
+1

Я не вижу, где этот код ссылается 'session.stufailedarray' –

ответ

1

Попробуйте вместо этого:

<!--- Set content type. ---> 
<cfset anArray=[]/> 
<cfif isDefined(session.stufailedarray)> 
    <cfset anArray=session.stufailedarray/> 
</cfif> 

<cfcontent type="Application/vnd.ms-excel"> 
<cfheader name="Content-Disposition" value="filename=load_status.xls"> 

<cfoutput> 
    <table cols=2 border=1> 
    <cfloop from="1" to ="#ArrayLen(anArray)#" index="row"> 
     <tr> 
     <td>#anArray[row][1]#</td> 
     <td>#anArray[row][2]#</td> 
     </tr> 
    </cfloop> 
    </table> 
</cfoutput> 

Убедитесь, что вы настроили и включен сеанс приложения должным образом. Чтобы использовать переменные сессии, включить их в двух местах:

ColdFusion Administrator The Application.cfc initialization code This.sessionManagement variable or the active cfapplication tag. ColdFusion Administrator, Application.cfc, and the cfapplication tag also provide facilities for configuring session variable behavior, including the variable time-out.

Configuring and using session variables

+0

это предотвращает ошибку, но это не решает проблему неопределенности переменной сеанса –

+0

Согласен, нам нужно больше деталей. – Nesha8x8

1

По вашему вопросу, у вас есть переменная session.stufailedarray. Однако в коде, который вы опубликовали (который генерирует ошибку), у вас есть session.stufailarray. Это также сообщение об ошибке, которое вы получаете.

"Element stufailarray is undefined is session" 

Обратите внимание, что множество (доступно) переменной, отказавший передается напряженной, что переменная ошибка в настоящем времени.