Я посмотрел краткое введение в длинный опрос ajax здесь и попытался имитировать его на своем компьютере с помощью wamp, однако я столкнулся с парой проблем.
Я продолжал получать сообщение об ошибке с неопределенным индексом в файле longpolling.php, строка 29, которая равна
$num = $_GET['num'];
Это произошло потому, что была одна функция get из ajax, у которой не было параметра num, в результате чего $ _GET notбыть установленнымЯ изменил код на
if(isset($_GET['num']))
$num = $_GET['num'];
else
$num = "";
, и это прекрасно работает.Однако, как только я перезагружаю страницу, счетчик компакт-дисков уменьшается один раз, а затем останавливается.
Кто-нибудь знает причину, почему это происходит?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-файл не стоит публиковать.он просто включает в себя файл javascript ajax, файл js-прототипа и соответствующие файлы div и т. д.
Я часами ломал голову, пытаясь решить эту проблему, но понятия не имею, что не так, и это не так.обнадеживает то, что это исходит из статьи типа "учебник".