2016-09-05 38 views
2

我嘗試運行裏面的一些元素,例如郵寄的形式循環,這個想法it's時的第一篇文章,送第二和第三等PHP的循環開始和停止元素裏面

<?php 
$list="1,2,3"; 

$exp=explode(",",$list); 

$b=0; 
foreach($exp as $ids) 
{ ?> 
    <form action="" method="post" id="form_2"> 
    <input type="hidden" name="send_end" value="ok" /> 
    </form> 
    <script> 
    document.getElementById('form_2').submit(); 
    </script> 
    <?php 
    sleep (5); 

    if ($b=="2") 
    { 
     exit("All Send"); 
    } 
    $b++; 
} 

它發送的問題並沒有發揮作用,它首先發送1的想法,等待,發送2等,我使用睡眠,但它是一樣的,所有的時間工作一次全部發送

問題it's我如何能在循環發送而是順序

問候和thank's的幫助

+0

你想創建形式和每5秒後,提交表單? –

+0

你可以使用這種方法從PHP端執行POST操作:http://stackoverflow.com/questions/5647461/how-do-i-send-a-post-request-with-php –

回答

0

您的邏輯錯誤:您正在使用JavaScript提交表單,但您正在使用php設置超時。

所以你唯一要做的就是延遲你的html/javascript的生成;它會在15秒後到達瀏覽器,然後所有表單提交將被同時觸發。

如果你想使用JavaScript來提交表單,你也應該使用javascript timeout來處理它們之間的延遲。

而且你應該使用AJAX的表單提交,因爲你不希望任何的形式提交時每次都要重新載入網頁...

在PHP中的選擇是例如使用cURL來發出POST請求。那麼你不需要JavaScript,你可以像現在一樣處理php的延遲。

編輯:另請注意,所有表單都具有相同的ID和ID必須是唯一的。現在只有第一個(可能是...)表單將被提交3次。

+0

我不想使用javascript無爲我只發送或顯示元素內部時,開始1和結束顯示第二等,忘記提交表單,它可能顯示元素順序或不,我的想法它的內部循環顯示每次一個元素到結束的循環 –

1

您的需求可以使用javascript來實現。請查看以下代碼片段以獲得更多理解。

var $list="1,2,3"; 
 

 
var $exp= $list.split(','); 
 
var $b=0; 
 

 
function createFromAndSubmit($exp,$b){ 
 
    alert("Form Create & submit - "+($b+1)); 
 
    var newForm = '<form action="" method="post" id="form_2"><input type="hidden" name="send_end" value="ok" /></form>'; 
 
    $("#newFrom").html(newForm); 
 
    $('#form_2').submit(); 
 
    
 
    $b = $b+1; 
 
    
 
    if($exp.length == $b){ 
 
    alert("finished"); 
 
    }else{  
 
    setTimeout(function() {  
 
     createFromAndSubmit($exp,$b); 
 
    }, 5000); 
 
    } 
 
} 
 

 
createFromAndSubmit($exp,$b);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="newFrom"></div>