gpt4 book ai didi

javascript - 在从 CFC 返回结果之前对 AJAX 查询执行字符串函数

转载 作者:行者123 更新时间:2023-11-30 06:04:46 26 4
gpt4 key购买 nike

我的页面顶部有字母“A-Z”。当用户单击字母时,我对 CFC 执行 AJAX 调用,CFC 根据所选字母查询缩略图目录,并返回相应文件名的列表。

当列表返回到我在页面上的函数时,我使用 split() 对文件名执行多个函数以提取某些信息。例如,文件名的格式如下:lastname_firstnameIMG_1234_RGB.jpg

我的目标是在我的 CFC 中提取姓氏、名字和数字,以便我可以标记缩略图并创建指向“真实”文件的链接以供下载,例如 lastname_firstnameIMG_1234_CMYK.tif等...

最初,我构建了我的 AJAX 函数以使用 split() 处理返回的列表,但我在 IE 中遇到错误。为了缓解这个问题,我宁愿在我的 CFC 中执行字符串函数并返回准备就绪的数据。

如何在返回数据结构之前在 CFC 中执行字符串函数?

编辑 此设置在 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
});

最佳答案

对于 JavaScript,我会取消正则表达式文字并简化 split() :

// replace with res.message.DATA.Name[i]
var theFile = 'lastname_firstnameIMG_1234_RGB.jpg';
// ['lastname', 'firstnameIMG', '1234', RGB.jpg']
var pieces = theFile.split('_');
//lastname
var theLastName = pieces[0];
//firstname
var theFirstName = pieces[1].slice(0, pieces[1].length - 3);
//1234
var theImage = pieces[2];

var bw = theLastName + '_' + theFirstName + 'IMG_' + theImage + '_BW.jpg';
var rgb = theLastName + '_' + theFirstName + 'IMG_' + theImage + '_RGB.jpg';

// lastname_firstnameIMG_1234_BW.jpg'
alert(bw);
// lastname_firstnameIMG_1234_RGB.jpg'
alert(rgb);

这是我在 <cfscript>...</cfscript> 中的做法:

theFile = 'lastname_firstnameIMG_1234_RGB.jpg';
// ['lastname', 'firstnameIMG', '1234', RGB.jpg']
pieces = theFile.split('_');
//lastname
theLastName = pieces[1];
//firstname
theFirstName = left(pieces[2], len(pieces[2]) - 3);
//1234
theImage = pieces[3];

bw = theLastName & '_' & theFirstName & 'IMG_' & theImage & '_BW.jpg';
rgb = theLastName & '_' & theFirstName & 'IMG_' & theImage & '_RGB.jpg';

// lastname_firstnameIMG_1234_BW.jpg'
writeOutPut(bw & "<br/>");
// lastname_firstnameIMG_1234_RGB.jpg'
writeOutPut(rgb);

关于javascript - 在从 CFC 返回结果之前对 AJAX 查询执行字符串函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718476/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com