Javascript调用PHP对长文本进行递归写入
为了克服8K的URI限制,我必须使用一个重新创建的write-by 将长文本分解成块,并具有一个可调用简单PHP程序写入磁盘的重新编写函数 变量chunkAppend第一次设置为“”,然后设置为append以通知PHP程序进行追加。在我需要函数的回调来让调用者知道写磁盘的工作已经完成之前,这一切都很正常 当文本很小,只有一个块时,它工作正常,doneCallback()会按它应该做的做,告诉调用方它完成了。但当区块长度超过一个时,它会将多个区块写入磁盘并发出警报(phpwrited);但不是doneCallback(“完成”) 在递归过程中,javascript中会发生什么改变doneCallback()的情况 骨架如下:Javascript调用PHP对长文本进行递归写入,php,Php,为了克服8K的URI限制,我必须使用一个重新创建的write-by 将长文本分解成块,并具有一个可调用简单PHP程序写入磁盘的重新编写函数 变量chunkAppend第一次设置为“”,然后设置为append以通知PHP程序进行追加。在我需要函数的回调来让调用者知道写磁盘的工作已经完成之前,这一切都很正常 当文本很小,只有一个块时,它工作正常,doneCallback()会按它应该做的做,告诉调用方它完成了。但当区块长度超过一个时,它会将多个区块写入磁盘并发出警报(phpwrited);但不是do
<pre><code>
caller:
var chunkCnt;
var chunk=[];
var chunkAppend="";
var phpWritten="";
// set up chunk[] array and chunkCnt before call
writeChunk(url, 0, function(rtn) { alert(rtn); });
function writeChunk(url, start, doneCallback) {
var prog="/acwphp/API_Write_TextFile.php?fullname="+
encodeURIComponent(url) + chunkAppend + "&text=" + chunk[start];
runExternalProg(prog, function(rtn) {
// php return no of bytes written
phpWritten = phpWritten + start + "--" + rtn + "\n";
++start;
chunkAppend = "&append=yes";
if (start >= chunk.length) { alert(phpWritten);
doneCallback(start+"..done.."); }
else { writeChunk(url, start, function(rtn) {}); }
});
}
</code></pre>
没有通用的“8K的URI限制”。你为什么这么说?当然,在特定组件、软件组件中可能存在限制。但这实际上只是表明,您没有将一项技术用于它的设计目的,似乎您正试图提交更大的数据集作为http get参数。您不使用http post请求的具体原因是什么?这两个动词都存在是有原因的……我使用Hostgator服务,它的Apache服务器有8K的限制。如果文本长度超过8K,则错误消息称URI太长。我没有使用HTML表单,因此没有涉及get/post问题,也不确定如何使用它。http get或post请求与您是否有HTML表单无关。http协议是一种传输协议,它独立于内容。任何http客户端都可以执行post请求。很抱歉,我没有得到它。在Javascript中,我只需使用filename=…fullpath name…&txt=…long string…,构造一个PHP调用,那么我从哪里知道它是post还是get呢?PHP非常简单地使用_请求获取数据并写入文件,只需要十几行!