Как беспрепятственно вставлять и заполнять форму Cognito Forms через JavaScript - PullRequest
0 голосов
/ 23 октября 2018

Я знаю, как плавно встраивать и заполнять форму, созданную в Cognito Forms, как это показано на странице их документации:

https://www.cognitoforms.com/support/65/data-integration/prefilling-a-form

Однако для страницы, которую я использую вSharePoint онлайн, у меня есть кнопка, которая загружает форму и отправляет переменные в форму через скрипт.Он отлично работает, если я публикую полный URL-адрес формы, но я не могу заставить работать полностью встроенную форму.Вот мой текущий скрипт страницы:

<script src="https://ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js" type="text/javascript"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="SPServices/jquery.SPServices.js" type="text/javascript"></script>
<script src="SPServices/jquery.SPServices.min.js" type="text/javascript"> 

<script type="text/javascript" language="javascript">
var currentUserName = _spPageContextInfo.userDisplayName;
var currentUser = _spPageContextInfo.userLoginName; 
var currentEmail = _spPageContextInfo.userEmail;
var myCode = Math.floor(100000 + Math.random() * 900000);

function iframeDidLoad() {}

function newSite() {
  document.getElementById('myIframe').src = ["https://www.cognitoforms.com/NorthArkansasCollege1/CarReservation?entry={%22Employee%22:%22"+currentUserName+"%22,%22Email%22:%22"+currentEmail+"%22,%22Code%22:%22"+myCode+"%22}"];
}

</script>

<p><strong>Hello, <script type="text/javascript">document.write(currentUserName)</script></strong></p>
<input type="button" value="Make Reservation" onClick="newSite()" /><br>&nbsp;<br>
<iframe id="myIframe" width="1000" height="1250" frameborder="0" allowfullscreen src="about:blank" onLoad="iframeDidLoad();"></iframe>

Как мне встроить iframe одновременно с вводом этой переменной?Я попытался изменить функцию, как это (ниже), но это привело к тому, что страница не загружалась.

function newSite() {
  document.getElementById('myIframe').src = ['https://services.cognitoforms.com/f/EQ4dNY8tzU2RWJKrtsZ7sA'];
  Cognito.load('forms', {id:'305', entry: {'"Employee":"'+currentUserName+'","Email":"'+currentEmail+'","Code":"'+myCode+'"'}});
}

Я также попробовал это (ниже) с такой же неудачной загрузкой.

function newSite() {
  document.getElementById('myIframe').src = ["https://services.cognitoforms.com/f/EQ4dNY8tzU2RWJKrtsZ7sA?id=305&entry={%22Employee%22:%22"+currentUserName+"%22,%22Email%22:%22"+currentEmail+"%22,%22Code%22:%22"+myCode+"%22}"];
}

Есть мысли?Кстати, я пользователь JavaScript начального уровня, поэтому я могу упустить что-то очевидное.

Я также попытался загрузить весь prefill встраивание iframe через .innerHTML:

<script type="text/javascript" language="javascript">
var currentUserName = _spPageContextInfo.userDisplayName;
var currentUser = _spPageContextInfo.userLoginName;
var currentEmail = _spPageContextInfo.userEmail;
var myCode = Math.floor(100000 + Math.random() * 900000);

function iframeDidLoad() {}

function loadPrefill() {
  document.getElementById('demo').innerHTML = "&nbsp;<br><iframe src='https://services.cognitoforms.com/f/EQ4dNY8tzU2RWJKrtsZ7sA?id=305' style='position:relative;width:1px;min-width:100%;*width:100%;' frameborder='0' scrolling='yes' seamless='seamless' height='1082' width='100%'></iframe><script src='https://services.cognitoforms.com/scripts/embed.js'><\/script><script>Cognito.prefill({'Employee':'"+currentUserName+"','Email':'"+currentEmail+"','Code':'"+myCode+"'});<\/script></div>";
  }

</script>

<p><strong>Hello, <script type="text/javascript">document.write(currentUserName)</script></strong></p>



К сожалению, это только загрузило формуно не выполнял предварительное заполнение, как указано на странице документации Cognito Forms.

...