有没有办法用jQuery将内容发布到服务器端.txt文件?

时间:2017-01-31 02:21:46

标签: javascript jquery

我正在尝试找到一种方法将内容发布到我托管的另一个.txt文件中。我知道有一种加载数据的方法,但有没有办法保存它?

为了加载,我有:

<!doctype html>
<html>
<body>
<script src=/files/scripts/jquery.js></script><!--i host jquery-->
<script>
jQuery.get('/development/lol.txt',function(data){
  $('body').text(data);
});
</script>
</body>
</html>

但有没有办法可以将数据写入.txt文件,就像我加载它一样?

1 个答案:

答案 0 :(得分:1)

注意,这只是一个概念的示例,您必须在生产环境中考虑更多细节

关于您的开发环境(即Web服务器软件,使用的服务器端语言)的信息有限。但这是我在LAMP(linux,apache,mysql,php)设置的情况下会做的。

我创建了一个javascript函数来处理对远程文本文件的写入:

<body onload="logOnLoad()">
<p>test</p>

</body>

然后我将这个函数订阅到一个事件句柄(它可以是任何其他事件处理程序,它取决于你何时想要编写这些数据),对于这个例子,我只使用onload on身体标签:

<?php

function writeData($sData, $sFilePath)
{
    $sTargetFile = fopen($sFilePath, "a");

    fwrite($sTargetFile, $sData);
    fclose($sTargetFile);
}

if(isset($_POST['sData']))
{
    writeData($_POST['sData'], "testLog.txt");
    echo "done";
}

所以现在我的javascript函数执行html页面的onload。现在我们需要编写服务器端代码来处理ajax请求,所以我创建了一个名为logData.php的php文件并将其放在文件中:

ActionResult ProductList(int startIndex, int pageSize) 
{
    var page = db.ProductModels.Skip(startIndex).Take(pageSize);
    return View(page);
}

现在每当我加载test.html时,它会从javascript变量sData获取静态内容并针对logData.php执行POST,logData.php文件返回查找writeData函数调用中指定的文件(in这个例子我寻找testLog.txt)。它根据此信息创建一个文件句柄,我们执行一个fwrite($ sTargetFile,$ sData),并将内容写入服务器端文本文件。