2012-04-02 4 views
1

У меня возникла странная проблема в этом коде, на самом деле это работает в течение 1 секунды, а затем больше нет. Возможно, некоторая переменная/функция неправильно объявлена ​​и вызывает эту странную вещь.Параметр ajax для передачи javascript/php

У меня в моем index.php этот кусок кода. Если я помещаю hardcode внутри функции myfunc par1 и par2 равным нулю, тогда все ведет себя правильно, означает, что loadfunc.php корректно вызывается с этими параметрами, а если попробовать код, который я разместил, я вижу, что loadfunc.php вызывается один раз правильно, и поэтому я может увидеть правильный выход всего за 1 секунду ..

<script type="text/javascript"> 

    function myfunc(par1, par2) 
    { 

     var 
      $http, 
      $self = arguments.callee; 

     if (window.XMLHttpRequest) { 
      $http = new XMLHttpRequest(); 
     } else if (window.ActiveXObject) { 
      try { 
       $http = new ActiveXObject('Msxml2.XMLHTTP'); 
      } catch(e) { 
       $http = new ActiveXObject('Microsoft.XMLHTTP'); 
      } 
     } 

     if ($http) { 
      $http.onreadystatechange = function() 
      { 
       if (/4|^complete$/.test($http.readyState)) { 
        document.getElementById('ReloadThis2').innerHTML = $http.responseText; 
        setTimeout(function(){$self();}, 1000); 
       } 
      }; 
      $http.open('GET', 'loadfunc.php' + '?par1=' + par1 + '&par2=' + par2); 
      $http.send(null); 
     } 
    } 

    </script> 
<script type="text/javascript"> 
setTimeout(function() {myfunc("0","0");}, 1000); 
</script> 
+0

является par1 и par2 правильным. попробуйте yo console.log URL-адрес, который вы отправляете. Я чувствую, что par1 или par2 содержит что-то другое после первого вызова. – encodes

+1

да на самом деле в консоли в начале я вижу, что par1 и par2 инициализируются нулем, но после того, как я увижу, тогда «undefined»! но кто будет отвечать за изменение пар1 и пар2? когда я вызываю myfunc, я помещаю их в нули, я не понимаю, почему и как они меняют значения. – Tiutto

ответ

0
setTimeout(function(){$self();}, 1000); 

Сбрасывает тайм-аут, но не устанавливает параметры, поэтому они появляются как неопределенные.

+1

Да, это решило! – Tiutto

+0

вы можете принять ответ, пожалуйста :) – encodes