Обновление:
Спасибо, Бен, я решил скопировать URL-адрес в другую структуру и изменить его с помощью StructUpdate ().Вот код, если кому-то интересно (специфично для моего приложения, но вы можете редактировать строки с комментариями, чтобы получить полезную функцию).
function rebuildURL(key, value)
{
var URLstring = "";
var VarCount = 0;
var tmpURL = duplicate(URL);
var VarSeparator = "";
structUpdate(tmpURL, arguments.key, arguments.value);
for (key in tmpURL)
{
if (tmpURL[key] neq "" and tmpURL[key] neq "10000" and tmpURL[key] neq "1") `<!--- remove the tmpURL[key] neq "10000" and "1"--->`
{
if (VarCount neq 0)
{
VarSeparator = "&";
}
else
{
VarSeparator = "";
}
URLstring = URLstring & VarSeparator & "#Lcase(key)#" & "=#Lcase(tmpURL[key])#";
VarCount = VarCount + 1;
}
}
structClear(tmpURL); `<!---not sure if this is necessary, but probably can't hurt unless you are processing thousands of links --->`
return(URLstring);
}
Еще раз спасибо!Скотт
Привет, ребята,
Я пишу пользовательскую функцию для переделки URL для ссылок на моих страницах, и я получаю следующую ошибку:
Сложные типы объектов не могут быть преобразованы в простые значения.
Выражение запросило переменную или промежуточный результат выражения в качестве простого значения, однако результат не может быть преобразован в простое значение,Простыми значениями являются строки, числа, логические значения и значения даты / времени.Запросы, массивы и COM-объекты являются примерами сложных значений.Наиболее вероятной причиной ошибки является то, что вы пытаетесь использовать сложное значение как простое.Например, вы можете пытаться использовать переменную запроса в теге cfif.
Ошибка произошла в C: \ ColdFusion8 \ wwwroot \ pascalnew \ turbos.cfm: строка 8 Вызывается из C: \ ColdFusion8 \ wwwroot\ pascalnew \ turbos.cfm: строка 108 Вызывается из C: \ ColdFusion8 \ wwwroot \ pascalnew \ turbos.cfm: строка 93 Вызывается из C: \ ColdFusion8 \ wwwroot \ pascalnew \ turbos.cfm: строка 1 Вызывается из C: \ ColdFusion8 \wwwroot \ pascalnew \ turbos.cfm: строка 1
6 : URLvar = "#URL#";
7 : switch(param)
8 : {
9 : case 'mfr':
10 : {
Вот мой код функции:
<cfscript>
function SetURL(param, paramval)
{
URLvar = "#URL#";
switch(param)
{
case 'mfr':
{
IF (URLvar contains "mfr")
{
REReplaceNoCase(URLvar, "mfr=^[^\&]", "mfr=#paramval#", "All");
}
break;
}
}
return(URLvar);
}
</cfscript>
Вот то, с чем я его тестировал:
<cfset urlvar = SetUrl("mfr", "edwards")>
<cfdump var="#urlvar#">
Как "MFR" комплексная переменная ??
Спасибо, Скотт