我看了一個簡短的介紹阿賈克斯長輪詢here並試圖模仿它在我自己的電腦上使用wamp,但是我遇到了一些問題。阿賈克斯長查詢問題
我一直得到有關在longpolling.php文件未定義指數的錯誤,第29行是
$num = $_GET['num'];這是因爲有一個沒有導致$ _GET一個num參數沒有被設置阿賈克斯get函數。 我將代碼更改爲
if(isset($_GET['num'])) $num = $_GET['num']; else $num = "";
並且工作正常。但是,一旦我重新加載頁面,CD計數減少一次,然後停止。
有人會知道這種情況發生的原因嗎? PHP文件(服務器)
<?php
$cd_stock = ("CdCount.txt");
function updateStock($num)
{
global $cd_stock;
$count = file($cd_stock);
$count = (int)$count[0];
$count = $count - $num;
if ($count < 0) $count = 0;
$fp = fopen($cd_stock , "w");
fputs($fp , "$count");
fclose($fp);
echo $count;
}
function getCdCount()
{
srand();
$newOrder = rand(1, 3);
$sleeptime = rand(2, 10);
sleep(2);
updateStock($newOrder);
}
if(isset($_GET['num']))
$num = $_GET['num'];
else
$num = "";
if ($num = "")
{
getCdCount();
}
else
{
updateStock((int)$num);
}
?>
JavaScript文件(客戶端)(使用原型框架)
Event.observe(window, 'load', function() {
Event.observe('btnSubmit', 'click', purchaseCD);
connectToServer();
});
function connectToServer()
{
new Ajax.Updater(
{ success: 'CD Count', failure: 'errors' },
'LongPolling.php',
{
method: 'get',
onSuccess: function(transport)
{
if (parseInt(transport.responseText)) connectToServer();
}
});
}
function purchaseCD()
{
new Ajax.Updater(
{ success: 'CD Count', failure: 'errors' },
'LongPolling.php',
{
method: 'get',
parameters: { num: $('txtQty').getValue() }
});
}
HTML文件是不是真的值得張貼起來。它只是包括ajax的JavaScript文件和原型js文件和相關的div等
我一直花費我的大腦幾個小時試圖解決這個問題,但我不知道什麼是錯的,它並不鼓勵這是來自「教程」類型的文章。
請在您的問題中添加code/js/html內嵌的_relevant_部分。 – Mat
好吧,我已經把他們內聯,但是,我不知道這個問題,所以不能分辨哪些部分是相關的或不。我希望我想添加太多。 – Michael