Для представления локатора магазина я использую плагин Bjorn Holines Store Locator.Этот плагин имеет HTML-шаблон, который создает список, кроме карты всех магазинов с подробной информацией.Я добавил кнопку в этот шаблон.Цель состоит в том, чтобы сохранить куки с идентификатором конкретной ветви при нажатии этой кнопки.Этот файл cookie должен быть установлен на нескольких доменах (без поддоменов).Я создал функцию для вызова CFC.Этот cfc вызывает уже существующий пользовательский тег, в котором файлы cookie устанавливаются с помощью img scr = "...".Обратите внимание, что у меня нет никакого опыта или знаний AJAX / JSON вообще.Я вижу много препятствий;returnformat, returntypes, cfoutputs, img, cfsavecontent, возвращаемое значение, вызывающее пользовательский тег и т. д. Используя этот код, я получаю TRUE в качестве результата + предупреждение javascript, но, очевидно, файлы cookie не сохраняются.Как я могу использовать этот уже существующий пользовательский тег для установки файлов cookie?Это вообще возможно?
Кнопка + функция в шаблоне hmtl:
<button type="button" class="btn btn-sm" id="voorkeur" onClick="setCookie('{{branch}}','{{name}}')">Als voorkeur instellen</button>
<script>
function setCookie(branch, name) {
$.ajax({
url: "siteparts/branch/setCookieMultipleDomains.cfc"
, type: "POST"
, dataType: "json"
, data: {"method" : "setCookie", "returnFormat": "json", "branch": branch}
}).done(function(response) {
console.log("response", response);
alert('Uw voorkeur voor ' + name + ' is opgeslagen.');
}).fail(function(jqXHR, textStatus, errorMessage) {
console.log("errorMessage",errorMessage);
});
}
</script>
CFC setCookieMultipleDomains.cfc:
<cfcomponent>
<cffunction name="setCookie" returntype="struct" access="remote">
<cfargument name="branch" type="string" required="true">
<cfset lresponse = {success=true}>
<cftry>
<CF_CU_cookieding action="setCookies" branch="#branch#" ret="qGetCookies"> --->
<cfcatch>
<cfset lresponse = {success=false}>
</cfcatch>
</cftry>
<cfreturn lresponse>
</cffunction>
</cfcomponent>
Пользовательский тег CF_CU_cookieding.cfm:
<cfsetting enablecfoutputonly="yes">
<cfparam name="attributes.action" default="">
<cfparam name="attributes.branch" default="">
<cfparam name="attributes.ret" default="">
<cfif attributes.action eq "setCookies">
<cfsavecontent variable="thecontent">
<cfoutput><img src="https://www.domain1.com/scripts/ajax/save/setCookie.cfm<cfif attributes.branch neq "">?branch=#attributes.branch#</cfif>" width="1" height="1"></cfoutput>
<cfoutput><img src="https://www.domain2.com/scripts/ajax/save/setCookie.cfm<cfif attributes.branch neq "">?branch=#attributes.branch#</cfif>" width="1" height="1"></cfoutput>
<cfoutput><img src="https://www.domain3.com/scripts/ajax/save/setCookie.cfm<cfif attributes.branch neq "">?branch=#attributes.branch#</cfif>" width="1" height="1"></cfoutput>
<cfoutput><img src="https://www.domain4.com/scripts/ajax/save/setCookie.cfm<cfif attributes.branch neq "">?branch=#attributes.branch#</cfif>" width="1" height="1"></cfoutput>
</cfsavecontent>
<cfif attributes.ret neq "">
<cfset setvariable("caller.#attributes.ret#", thecontent)>
<cfelse>
<cfoutput>#thecontent#</cfoutput>
</cfif>
<cfelseif attributes.action eq "createCookie">
<cfcookie name="d_cookie_ok" value="1" expires="never">
<cfif attributes.branch neq "">
<cfcookie name="d_cookie_branch" value="#attributes.branch#" expires="never">
</cfif>
</cfif>
И набор изображений: Cookie.cfm:
<cfparam name="request.branch" default="">
<cfif request.branch neq "">
<CF_CU_cookieding action="createCookie" branch="#request.branch#">
<cfelse>
<CF_CU_cookieding action="createCookie">
</cfif>