我看了一个简短的介绍阿贾克斯长轮询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