2013-11-20 80 views
-2

我有一個看起來像這樣的代碼:PHP不工作

jQuery.post("test1send.php", { browName : browser, timeCan: testTimeCanvas , timeSVG: testTimeSVG }); 

window.location.href = 'http://localhost/start/prosteTest2.html'; 

PHP文件看起來像:

<?php 
$browName = $_POST['browName']; 
$timeCan = $_POST['timeCan']; 
$timeSVG = $_POST['timeSVG']; 

    if($browName=='Opera'){ 
    $rowsCount = count(file('Data\Test1\Test1Opera.csv')); 
    $fp = fopen('Data\Test1\Test1Opera.csv', 'a'); 
    fwrite($fp, $rowsCount); 
    fwrite($fp, ','); 
    fwrite($fp, $timeCan); 
    fwrite($fp, ','); 
    fwrite($fp, $timeSVG); 
    fwrite($fp, "\r\n"); 
    fclose($fp); 
    }else if($browName=='Firefox'){ 
    $rowsCount = count(file('Data\Test1\Test1Firefox.csv')); 
    $fp = fopen('Data\Test1\Test1Firefox.csv', 'a'); 
    fwrite($fp, $rowsCount); 
    fwrite($fp, ','); 
    fwrite($fp, $timeCan); 
    fwrite($fp, ','); 
    fwrite($fp, $timeSVG); 
    fwrite($fp, "\r\n"); 
    fclose($fp); 
    } 
?> 

應該發送變量PHP和加載下一頁。 PHP應該將變量保存爲.csv文件,但不起作用。如果沒有「window.location.href」它可以正常工作,但是當有命令轉到下一頁時,PHP什麼都不做。是否需要延遲才能首先執行PHP,然後轉到下一頁?

+3

可能要考慮更改您的標題。儘管它引起了我的注意。 –

+0

我知道那個標題是錯誤的,但我不知道我該怎麼稱呼它 – Jake

+1

在您的AJAX請求成功時調用window.location.href。我認爲您可能遇到的問題是發送之前的重定向,因爲您的代碼佈局方式不同。喜歡的東西: '$阿賈克斯({ 類型: 「POST」, 網址: 「http://we.com/」, 數據:{somedata:datahere}, 成功:函數(){ 窗口。 location.href =「你想要他們去的地方」; } });' – Cameeob2003

回答

3

將在後成功回調window.location.href - http://api.jquery.com/jQuery.post/

jQuery.post("test1send.php", { browName : browser, timeCan: testTimeCanvas , timeSVG: testTimeSVG }, function(){ window.location.href = 'http://localhost/start/prosteTest2.html'; }); 
+0

它就像你說的那樣工作。 – Jake

1

是的,它需要一個延遲。當您執行window.location.href = ...時,您告訴瀏覽器在需要處理之前取消當前請求。

最簡單的事情很可能會

jQuery.post("test1send.php", { ...}).done(function() { 
    window.location.href = ... 
}); 

雖然有一些相當的技術。如果該帖子可能失敗,那麼您也可以使用.fail()來處理該帖子。

+0

在最近的jQuery版本中,還有一個'.always()'回調,完成時觸發,無論是成功還是失敗。 http://api.jquery.com/jQuery.post/ – showdev