Jquery函数创建与没有库问题

时间:2010-07-21 19:10:24

标签: javascript jquery ajax

我的代码依赖于可在此处运行的jquery:

    $(function() {  


 var referrer = document.referrer;
    var dataText = 'client='+client+'&referrer=';
   dataText = dataText + referrer;

    // Create the AJAX request  
    $.ajax({  
        type: "GET",                   
        url: "http://www.myurl.com/project/thecollector.php",            
        data: dataText,                  
        success: function() {            
            $('#complete').html( 'Your page view has been added!' );  
        }  
    });  
});

我在这里重写了代码以不需要jquery:

window.addEventListener('domready', function()
{
 var referrer = document.referrer; 
    var dataText = 'client='+client+'&referrer=';  
   dataText = dataText + referrer;

 if (window.XMLHttpRequest)        
 {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp = new XMLHttpRequest();       
 }
 else        
 {
  // code for IE6, IE5
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");        
 }
 var url = "http://www.myurl.com/project/thecollector.php?"+dataText;        
 xmlhttp.open("GET",url,false);        
 xmlhttp.send(null);       
});

我遇到的问题是jquery代码总是将信息捕获到我正在寻找的服务器,但后者只是每隔一段时间捕获它,它看起来似乎是随机的。有没有办法让函数调用来强制它,我尝试onload它也不起作用。

1 个答案:

答案 0 :(得分:1)

“domready”不是一个事件,所以我很惊讶它的工作原理。例如,在Mozilla和Opera中,它应该是DOMContentLoaded。你确定它不起作用只是因为有时document.referrer是空的,有时它不是吗?

如果您只是将代码放在<script>块中(最好放在外部文件中)并将其放在结束标记之前,那就简单多了。然后它会在DOM准备就绪时运行,并且对事件没有任何不满。那应该没问题。

最后,这看起来最好在服务器端完成,就像PHP之类的东西一样,你也可以访问HTTP引用者。然后,您可以直接将结果输出到HTML中。此外,您可以使用NoScript允许那些奇怪的用户,或者只是在没有JavaScript的情况下浏览以查看此内容。