На моей странице алфавит в верхней части «A-Z».Когда пользователь нажимает на букву, я выполняю AJAX-вызов CFC, который выполняет запрос каталога миниатюрных изображений на основе выбранной буквы и возвращает список соответствующих имен файлов.
Когда списоквернулся к своей функции на странице, которую я использую split()
, чтобы выполнить несколько функций для имени файла, чтобы извлечь определенную информацию.Например, имена файлов отформатированы следующим образом: lastname_firstnameIMG_1234_RGB.jpg
Моя цель - извлечь фамилию, имя и номер в моем CFC, чтобы я мог пометить миниатюру изображения и создать ссылки на«реальные» файлы для загрузки, такие как lastname_firstnameIMG_1234_CMYK.tif
и т. д. *
Изначально я построил свою функцию AJAX для работы с возвращенным списком, используя split()
, но в IE возникают ошибки.Чтобы смягчить проблему, я бы предпочел выполнять строковые функции в моем CFC и возвращать данные, готовые к работе.
Как выполнить строковые функции в CFC до возврата структуры данных?
EDIT Эта настройка отлично работала в Safari и FF, но вызвала ошибку в IE.Я попытался изменить функции split()
и добился некоторого успеха, но тогда, конечно, он не работал должным образом в FF.Опять же, моя цель - устранить строковые моды javascript и сделать это в CFC.
Вот мой CFC:
<cffunction name="List" access="remote" output="no" returntype="struct">
<cfargument name="letter" required="yes" type="string">
<cfset local = StructNew()>
<cfset local.response = StructNew()>
<cfset local.response["error"] = "">
<cfset local.response["message"] = "">
<cfset local.data = #arguments.letter# & "*.jpg">
<cfdirectory
action="list"
directory="#thumbsdir#"
recurse="true"
listinfo="name"
name="qFile"
filter="#local.data#"
/>
<cfset local.response["message"] = #qFile#>
<cfreturn local.response>
</cffunction>
И моя функция AJAX (которая обернута в document.readyфункция ...):
$('.lastname').click(function(e){
e.preventDefault();
$('#emptymessage').hide();
$('#searching').show();
$('#content').html("");
var alpha = $(this).attr('id');
$.getJSON("cfcengine.cfc?method=List&returnformat=json&queryFormat=column",
{letter:alpha},
function(res, code) {
var s = "";
if(res.message.ROWCOUNT > 0) {
$('#searching').hide();
for(var i=0; i<res.message.ROWCOUNT; i++) {
//This is all the stuff I want to get rid of...
var theFile = res.message.DATA.Name[i]
var theLastName = theFile.split(/_(.+)/)[0];
var theRest = theFile.split(/_(.+)/)[1];
var theFirstNameAll = theRest.split(/_(.+)/)[0];
var theFirstName = theFirstNameAll.split(/(?:IMG)/)[0];
var theImageAll = theRest.split(/_(.+)/)[1];
var theImage = theImageAll.split(/_(.+)/)[0];
var bw = theLastName + '_' + theFirstName + 'IMG_' + theImage + '_BW.jpg';
var rgb = theLastName + '_' + theFirstName + 'IMG_' + theImage + '_RGB.jpg';
//Right now I'm just returning the name to the page until debugging is complete...
s += '<p>' + res.message.DATA.Name[i] + '<\/p>';
}
} else {
var s = "Sorry, nothing matched your search.";
}
$("#content").html(s);
//End response
}
//End getJSON
);
//End plist click function
});