PHP - 使用 Ajax 刷新 While 循环数据 [英] PHP - Flushing While Loop Data with Ajax
问题描述
使用 PHP,我想做一个 while 循环来读取一个大文件并在请求时发送当前行号.使用 Ajax,我想获取当前行数并将其打印到页面上.使用 html 按钮,我希望能够单击并激活或终止仅运行一次并调用 ajax 方法的 javascript 线程.
我试了一下,但出于某种原因,除非我注释掉 echo str_repeat(' ',1024*64);
函数,当它被注释掉时,它会显示整个循环结果:
已处理 1 行.已处理 2 行.已处理 3 行.已处理 4 行.已处理 5 行.已处理 6 行.7 行已处理.已处理 8 行.已处理 9 行.已处理 10 行.
在一行中而不是在单独的行中显示它们,例如:
1 行已处理.已处理 2 行.已处理 3 行.已处理 4 行.已处理 5 行.已处理 6 行.已处理 7 行.已处理 8 行.已处理 9 行.已处理 10 行.
我也不确定如何终止 JavaScript 线程.所以总共有 2 个问题:
1. 它一次返回整个 While 循环对象,而不是每次循环时.2. 我不确定如何终止 JQuery 线程.
有什么想法吗?以下是我目前的代码.
msgserv.php
asd.html
<头><script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript" charset="utf-8"></script><style type="text/css" media="screen">.msg{ 背景:#aaa;填充:.2em;边框底部:1px #000 实心}.new{ 背景色:#3B9957;}.error{ 背景色:#992E36;}</风格>头部><身体><中心><字段集><legend>计算文件中的行数</legend><input type="button" value="开始计数" id="startCounting"/><input type="button" value="停止计数!"onclick="clearInterval(not-Sure-How-To-Reference-Jquery-Thread);"/></fieldset></中心><div id="消息"><div class="msg old"></div>
<script type="text/javascript" charset="utf-8">函数添加味精(类型,味精){/* 添加div的简单助手.type 是 CSS 类的名称(旧/新/错误).msg 是 div 的内容 */$("#messages").append("<div class='msg "+ type +"'>"+ msg +"</div>");}函数 waitForMsg(){/* 这请求 url "msgsrv.php"当它完成(或错误)*/$.ajax({类型:获取",url: "msgsrv.php",async: true,/* 如果设置为非异步,浏览器将页面显示为正在加载.."*/缓存:假,timeout:2880000,/* 以毫秒为单位的超时设置为 8 小时 */成功:函数(数据){/* 当对 barge.php 的请求完成时调用 */addmsg("new", 数据);/* 添加对 .msg div 的响应(使用new"类)*/设置超时('waitForMsg()',/* 请求下一条消息 */1000/* ..1 秒后 */);},错误:函数(XMLHttpRequest,textStatus,errorThrown){addmsg("error", textStatus + " (" + errorThrown + ")");设置超时('waitForMsg()',/* 后重试.. */"15000");/* 毫秒 (15 秒) */},});};$('#startCounting').click(function() {等待消息();});