dongluanguang4774
2015-06-04 00:14
浏览 71

通过参数PHP将变量传递给AJAX函数

I'm trying to pass 4 variables through the parameters of the ajax function, but it's not accepting it for some reason. The variables I'm trying to pass are the url, action, id, and the timeout in milliseconds. If anyone know what I'm doing wrong, please correct me. Thank you.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<script type = "text/javascript"> 

function myAjax(url,action,id,timeout) {
      $.ajax({
           type: "POST",
           url: url,
           data:{action: action},
           error: function(xhr,status,error){alert(error);},
           success:function(data) {
             document.getElementById( id ).innerHTML = data;
             setTimeout(myAjax, timeout);
           }

      });

}

</script>

<body onload="myAjax('testing.php','call_this','my_div',2000)">

<div id="my_div"></div>

</body>

Here's the working version of the code, without passing the variables through the parameters, and instead having them inside the function itself:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

<script type = "text/javascript"> 

function myAjax() {
      $.ajax({
           type: "POST",
           url: 'testing.php',
           data:{action: 'call_this'},
           error: function(xhr,status,error){alert(error);},
           success:function(data) {
             document.getElementById( 'my_div' ).innerHTML = data;
             setTimeout(myAjax, 2000);
           }

      });

}

</script>

<body onload="myAjax()">

<div id="my_div"></div>

</body>

图片转代码服务由CSDN问答提供 功能建议

我试图通过ajax函数的参数传递4个变量,但由于某种原因它不接受它 。 我试图传递的变量是url,action,id和超时(以毫秒为单位)。 如果有人知道我做错了什么,请纠正我。 谢谢。

 &lt; script src =“https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js”&gt;&lt;  / script&gt; 
 
&lt; script type =“text / javascript”&gt;  
 
函数myAjax(url,action,id,timeout){
 $ .ajax({
 type:“POST”,
 url:url,
 data:{action:action},
 error:  function(xhr,status,error){alert(error);},
 success:function(data){
 document.getElementById(id).innerHTML = data; 
 setTimeout(myAjax,timeout); 
}  
 
}); 
 
} 
 
&lt; / script&gt; 
 
&lt; body onload =“myAjax('testing.php','call_this','my_div',2000)”&gt;  
 
&lt; div id =“my_div”&gt;&lt; / div&gt; 
 
&lt; / body&gt; 
   
 
 

以下是代码的工作版本 ,不通过参数传递变量,而是将它们放在函数本身内:

 &lt; script src =“https://ajax.googleapis.com/ajax/  libs / jquery / 2.1.3 / jquery.min.js“&gt;&lt; / script&gt; 
 
&lt; script type =”text / javascript“&gt;  
 
函数myAjax(){
 $ .ajax({
 type:“POST”,
 url:'testing.php',
 data:{action:'call_this'},
 error:function  (xhr,status,error){alert(error);},
 success:function(data){
 document.getElementById('my_div').innerHTML = data; 
 setTimeout(myAjax,2000); 
  } 
 
}); 
 
} 
 
&lt; / script&gt; 
 
&lt; body onload =“myAjax()”&gt; 
 
&lt; div id =“my_div”&gt;&lt;  ; / div&gt; 
 
&lt; / body&gt; 
   
 
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongshi6969 2015-06-04 00:33
    已采纳

    Re-write the setTimeout() call like so:

    setTimeout(function() { 
        myAjax(url,action,id,timeout); 
    }, timeout);
    
    已采纳该答案
    打赏 评论
  • dpy33121 2015-06-04 00:33

    The second time it is called (from your success handler), you are not passing any parameters to myAjax() so it will not have any arguments when it is invoked the second time.

    There are a couple ways you can fix that. One way it to just copy the arguments when you call myAjax(...) from within:

    function myAjax(url,action,id,timeout) {
          $.ajax({
               type: "POST",
               url: url,
               data:{action: action},
               error: function(xhr,status,error){alert(error);},
               success:function(data) {
                 document.getElementById( id ).innerHTML = data;
                 setTimeout(function() {
                     myAjax(url, action, id, timeout);
                 }, timeout);
               }
          });
    }
    

    But, you could also make an inner function and then just reference the arguments from the closure like this:

    function myAjax(url,action,id,timeout) {
          function run() {
              $.ajax({
                   type: "POST",
                   url: url,
                   data:{action: action},
                   error: function(xhr,status,error){alert(error);},
                   success:function(data) {
                     document.getElementById( id ).innerHTML = data;
                     setTimeout(run, timeout);
                   }
              });
          }
          // run the ajax function the first time
          run();
    }
    
    打赏 评论

相关推荐 更多相似问题