Я пытаюсь создать алфавит на основе вкладок, установленный сотрудниками в базе данных, таким образом, он не будет набором az, а динамически построен на основе сотрудников в базе данных. вот запрос:
<cffunction name="ALPHA_RL" access="remote" returnformat="JSON" returntype="any" >
<cfargument name='DEPTMATRICSID' required='true' />
<cfset retVal = ArrayNew(1)>
<cfquery datasource="#request.DSN#" username="#request.User#" password="#request.Password#" name="getAlphaList">
SELECT DISTINCT ALPHA FROM (
SELECT SUBSTR(A.LAST_NAME, 1, 1) As ALPHA
FROM WEBSCHEDULE.APPLICATION_USER A, WEBSCHEDULE.FACULTYHISTORY H, WEBSCHEDULE.FACULTYTABLE T
WHERE A.EMPLID = H.FACULTYEMPLID
AND A.EMPLID = T.EMPLID
AND H.DEPTMATRICSID = #ARGUMENTS.DEPTMATRICSID# )
WHERE ALPHA IS NOT NULL
ORDER BY ALPHA
</cfquery>
<cfloop query="getAlphaList">
<cfset temp = {} />
<cfset temp['ALPHA'] = getAlphaList.ALPHA />
<cfset ArrayAppend(retval, temp)>
</cfloop>
<cfset result = {} />
<cfset result['items'] = retVal />
<cfreturn result>
</cffunction>
Это работает хорошо и возвращает требуемые данные ниже:
{"items":[{"ALPHA":"A"},{"ALPHA":"B"},{"ALPHA":"C"},{"ALPHA":"F"},{"ALPHA":"G"},{"ALPHA":"H"},{"ALPHA":"J"},{"ALPHA":"L"},{"ALPHA":"M"},{"ALPHA":"N"},{"ALPHA":"O"},{"ALPHA":"P"},{"ALPHA":"R"},{"ALPHA":"S"}]}
Теперь, где я столкнулся с проблемой на моей странице html, я создал функцию, и цикл забросил приведенные выше результаты для построения html для вкладок:
function alphaTabs(d){
$.ajax({
url: "CFCs/ManageUserProfiles.cfc",
dataType: "json",
data: {
method: "ALPHA_RL",
DEPTMATRICSID: d
},
success: function(response){
var x = response.items;
var str = '';
if (response.items[0] != undefined) {
str += '<ul>';
for (var i = 0; i < x.length; i++) {
str += '<li><a href="#alphaTabz-' + x[i].ALPHA + '">' + x[i].ALPHA + '</a></li>';
}
str += '</ul>';
for (var j = 0; j < x.length; j++) {
str += '<div id="alphaTabz-' + x[j].ALPHA + '">';
str += '<p>' + j + '</p>';
str += '</div>';
}
}
$('#displayAlphaList').append(str);
},
error: function(data){
}
});
}
Вот как я вызываю вкладки jquery в документе document.ready:
$('#displayAlphaList').tabs();
var d = '<cfoutput>#session.ad.AppDeptID#</cfoutput>';
alphaTabs(d)
Созданный html отлично, но вызов функции $ ('# displayAlphaList'). Tabs() не распознает вкладки, поэтому он выглядит как простой HTML-код, а вкладки не создаются. Заранее спасибо за любую проницательность, с которой вы можете мне помочь.
Вы вызываете $ ('# displayAlphaList'). Tabs() ПЕРЕД созданием вкладок.
Вам нужно позвонить $('#displayAlphaList').tabs();
в конце вашей "успешной" функции.
function alphaTabs(d){
$.ajax({
url: "CFCs/ManageUserProfiles.cfc",
dataType: "json",
data: {
method: "ALPHA_RL",
DEPTMATRICSID: d
},
success: function(response){
var x = response.items;
var str = '';
if (response.items[0] != undefined) {
str += '<div id="displayAlphaList">'
str += '<ul>';
for (var i = 0; i < x.length; i++) {
str += '<li><a href="#alphaTabz-' + x[i].ALPHA + '">' + x[i].ALPHA + '</a></li>';
}
str += '</ul>';
for (var j = 0; j < x.length; j++) {
str += '<div id="alphaTabz-' + x[j].ALPHA + '">';
str += '<p>' + j + '</p>';
str += '</div>';
}
str += '</div>';
}
$('#alphaList').html(str);
$('#displayAlphaList').tabs();
},
error: function(data){
}
});
}