我遇到跟踪代码无法正常工作的问题,因为在加载所需的JS脚本和函数之前调用它。情况如下:
成功提交表单(WordPress上的CF7)后立即调用以下函数。
function fn111Rooms(){
var email_address = document.getElementsByName("your-email")[0].value;
fnTransaction('Room booked', 'userid=' + email_address);
location.replace('http://example.com/thank-you');
}
但问题是,需要事先调用以下脚本+函数才能使一切正常工作
<script type="text/javascript" src="http://www.example.com/Tracking.js"></script>
<script>fnPageHit('4ddc12d4344');</script>
此位位于每个页面的部分,但在表单提交时不会再次调用,因为表单通过AJAX提交(我相信这是问题)。
如何将脚本包含在fn111Rooms中,并确保按顺序正确调用所有内容。真的很抱歉,如果这是一个愚蠢的问题,但JS不时让我感到困惑。
编辑:这会有用吗?
function fn111Rooms(){
// Loads the script
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", "http://www.example.com/Tracking.js")
// Calls the required function
fnPageHit('4ddc12d4344');
// Does the rest
var email_address = document.getElementsByName("your-email")[0].value;
fnTransaction('Room booked', 'userid=' + email_address);
location.replace('http://example.com/thank-you');
}
然后在提交表单时调用一个函数..?
答案 0 :(得分:0)
您可以查看jQuery.when()
假设你有一个必须执行的功能
function yourFirstFunction(){
$.post('/somewhere');
}
第一次完成后第二次
function yourOtherFunction() {
//stuff
}
然后您可以使用以下构造
$.when( yourFirstFunction() ).then(function(data) {
yourOtherFunction()
})
即yourFirstFunction
完成时(ajax请求已完成)yourSecondFunction
将被执行
答案 1 :(得分:0)
一种方法是使用一些间隔应用无限循环并检查以下条件
fnPageHit&amp;&amp; fnPageHit( '4ddc12d4344');
所以当ile被加载时你会在其他情况下得到函数fnPageHit将是未定义因此它将不会执行并且不会导致错误