#javascript #jquery #ajax #forms #hubspot
Вопрос:
Я управляю сайтом, на котором у нас есть файл cookie, созданный в нижнем колонтитуле нашего сайта, и мне нужно использовать этот файл cookie в форме, которую я внедряю.
Я не уверен, как подключить файл cookie к форме. На сайте используются модули Hubspot, а html-код нижнего колонтитула создается с помощью тега сценария. Форма также имеет тег сценария как часть своего кода. Поскольку я не могу вложить теги сценариев, я не нашел хорошего решения для подключения этих элементов.
Я открыт для любой мудрости или идей, так как я пробовал разные вещи, но безуспешно. Я не понимаю, почему htmlData выполняется дважды, если бы кто-нибудь мог, пожалуйста, просветить меня. Спасибо!
Это форма и другой скрипт, в котором некоторые строки опущены:
<div class="form-embed" data-form-id="1" data-user-id="2"></div><script async src="//mywebsite.com/formembed/embedform.js"></script>
<script>
$(document).ready(function(){
var officerInfo = getCookie('officerInfo');
var hashVal = window.location.hash;
if (officerInfo !== null){
var officerName = '';
officerName = '#' officerInfo.fname '_' officerInfo.lname;
if(hashVal amp;amp; hashVal != officerName){
setOfficer();
}else{
officerInfo = JSON.parse(officerInfo)
console.log('GET = ', officerInfo);
var htmlData = '';
htmlData ='<div class="officer-inner">';
htmlData =' <div class="left-part">';
htmlData =' <div class="info-section">';
htmlData =' <div>';
htmlData =' <span>' officerInfo.fname '</span><strong>' officerInfo.lname '</strong>';
htmlData =' </div>';
htmlData =' </div>';
htmlData =' </div>';
htmlData =' <div class="right-part">';
htmlData =' <ul>';
if(officerInfo.link){
htmlData =' <li><a href="' officerInfo.link '" title="Apply Now"> Apply Now </a></li>';
}
htmlData =' </ul>';
htmlData =' </div>';
htmlData ='</div>';
var currUrl = window.location.href;
if(currUrl amp;amp; currUrl.indexOf('/loan-officer/') == -1){
$('.last-visited-officer > .container').html(htmlData);
$('.last-visited-officer').fadeIn(300);
currUrl = currUrl.split('#')[0];
history.pushState("","", currUrl '#' officerInfo.fname '_' officerInfo.lname);
}
}
}else{
setOfficer();
}
if($('.loan_officer_single').length > 0){
var fname = $('.right-shaped-banner .banner-caption h2').text();
var lname = $('.right-shaped-banner .banner-caption h1').text();
var link = window.location.href;
var officer = { fname: fname, lname: lname, link: link };
officer = JSON.stringify(officer);
console.log(officer);
setCookie('officerInfo', officer, 1);
}
setTimeout(function(){
var arrHide = ['{{request.scheme}}://{{request.domain}}/jobs'];
var currUrl = '{{ request.full_url }}';
if(jQuery.inArray(currUrl, arrHide) !== -1){
$('.last-visited-officer').hide();
}
},500);
});
function setOfficer(){
var hashVal = window.location.hash;
if(hashVal){
hashVal = hashVal.replace('#','');
hashVal = hashVal.split('_');
var fname = hashVal[0];
var lname = hashVal[1];
console.log(fname, lname)
$.ajax({
url: 'https://mywebsitename.com=' fname 'amp;last_name=' lname,
type: 'GET',
dataType: 'json',
success: function(data){
console.log(data)
if(data.objects amp;amp; data.objects.length > 0)
{
$.each(data.objects, function(i, val){
var fname = val.values['1'];
var lname = val.values['4'];
var link = val.values['23'];
var officer = { fname: fname, lname: lname, link: link };
officer = JSON.stringify(officer);
console.log(officer);
setCookie('officerInfo', officer, 1);
var htmlData = '';
htmlData ='<div class="officer-inner">';
htmlData =' <div class="left-part">';
htmlData =' <div class="info-section">';
htmlData =' <div>';
htmlData =' <span>' fname '</span><strong>' lname '</strong>';
htmlData =' </div>';
htmlData =' </div>';
htmlData =' </div>';
htmlData =' <div class="right-part">';
htmlData =' <ul>';
if(link){
htmlData =' <li><a href="' link '" title="Apply Now"> Apply Now </a></li>';
}
htmlData =' </ul>';
htmlData =' </div>';
htmlData ='</div>';
var currUrl = window.location.href;
if(currUrl amp;amp; currUrl.indexOf('/loan-officer/') == -1){
$('.last-visited-officer > .container').html(htmlData);
$('.last-visited-officer').fadeIn(300);
}
});
}
}
});
}
}
function setCookie(name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() (days*24*60*60*1000));
expires = "; expires=" date.toUTCString();
}
document.cookie = name "=" (value || "") expires "; path=/";
}
function getCookie(name) {
var nameEQ = name "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i ) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
document.cookie = name '=; Max-Age=-99999999;';
}
$(window).on('load', function(){
if($('.last-visited-officer').is(':visible')){
$('.footer-section').addClass('officer-space');
}
});
</script>