我最近几天在AJAX上做了很多搜索。 我明白为什么我推迟学习JavaScript的特定领域,看起来有点复杂。
我注意到大多数问题和答案是围绕如何通过POST发送数据制定的,但是一旦POST完成,我找不到任何有关 DO 的数据的详细示例
我想使用JavaScript而不是php来处理数据服务器端,我还没有找到任何有用的Q / A.有关该主题的教程或讨论,不包括PHP。我想我必须自己提出具体问题。
为了帮助想象我的问题,我将给出一个刺激我问题的具体例子。
我有一个包含待处理任务列表的文件,以及已完成的任务列表。
此列表中的功能是当用户点击任务时,它会被插入到数据库中,并与用户相关联。
多个用户看到此页面,任何登录的人都可以"登录"通过单击列表项完成任务。列表项还会打开另一个页面,其中包含有关项目的更多详细信息,并在将完成和用户数据记录到数据库时级联到其他一些功能。
<h3>To Do!</h3>
<ol class="pending>
<li><a class="pending_task" href="localhost://nextstep.html">Task Three</a></li>
<li><a class="pending_task" href="localhost://nextstep.html">Task Five</a></li>
<li><a class="pending_task" href="localhost://nextstep.html">Task Six</a></li>
</ol>
在同一页面上是&#34;已完成&#34;单击待处理时填充的任务列表:
<h3>Completed!</h3>
<ol class="completed">
<li><a class="completed_task" href="localhost://nextstep.html">Task One</a></li>
<li><a class="completed_task" href="localhost://nextstep.html">Task Two</a></li>
<li><a class="completed_task" href="localhost://nextstep.html">Task Four</a></li>
</ol>
管理该代码的代码:
$(document).ready(function(){
$('.pending').on('click', function(){
evt.preventDefault();
$(this).toggleClass("pending").parent().appendTo("ol.completed");
});
});
我的目标是在任务完成后让静态html更新服务器端,以便当页面重新加载或被其他用户访问时,新的配置&#34;待定&#34; vs&#34;已完成&#34;,是最新的。正如朋友解释的那样,我无法从客户端将更新的文件写入服务器,因此我意识到AJAX是最佳解决方案。将更新的信息发送到服务器,并在服务器端的脚本在单击任务完成时重写源文件。我已经使用PHP完成了$ _POST [key]功能,但我对JavaScript印象更深刻,所以我想学习如何在JavaScript中完成这项工作。
根据我的新理解,我稍微更改了代码:
$(document).ready(function(){
$('.pending').on('click', function(){
evt.preventDefault();
$(this).toggleClass("pending").parent().appendTo("ol.completed");
var newData = $("ul.pending") + $("ul.completed");
console.log(newData);
var xhr = $.ajax({ //jshint ignore: line
method:'POST',
data: newData,
url:"update.js",
success: function(){
console.log("completed POST");
},
dataType: 'html',
}); //xhr
});
});
所以我做到了这一点,我对如何正确激活接收脚本以便重写文件以及重新加载文件以便保持更改的持久性感到困惑。
我希望了解处理POST数据的详细信息,而不使用PHP或DATABASE。我只想使用<ol>
项目的更新更改重写HTML。
如果这不是适当的论坛,或者有资源可以帮助启发我,我会很感激如何找到最佳资源的建议。
谢谢。
更新 我在服务器端使用node.js。 HTML是通过app.js呈现的,因此进行服务器端操作的想法与使用node.js有很大关系
更新2:
我在POST /响应动态过程中有点迷失。 启动POST的脚本将得到响应,我很清楚。
因此,如果我想在服务器端操作POSTEd html,那么响应将来自node.js,表明文件已被重写,如POST所要求的那样?因此响应可能/将是我在服务器端编写代码的结果。
我的问题仍然存在:如何操作服务器端的POST数据?
在PHP中它是$ _POST [key]。它是什么JavaScript?
由于我发送HTML作为POST数据,我该如何处理?它是哈希{key,value}还是其他形式?我在Google搜索中找不到这些详细信息。我不确定如何说出问题以获得我需要的答案。
此外,在POST调用解决后,是什么触发了节点脚本在服务器端执行?或者我是否过度思考那部分?
答案 0 :(得分:2)
您似乎误解了服务器/客户端模型。您不能使用html / javascript来更改服务器中的内容,因为您必须使用PHP服务器。
你可以拥有一个带有Node.js https://nodejs.org的javascript服务器,但这可能会取代你当前的PHP服务器。您可以使用不同语言的多个服务器,但这会使您的项目难以维护。
现在关于AJAX请求,它就像任何其他http请求一样。您将发送带有元数据的标题,您将从服务器收到答案。如果您希望服务器在每次收到特定请求时执行某些操作(例如写入文件或数据库),则需要自己编写代码。
更新
您编辑了自己的问题,现在我知道您正在使用nodejs。以下是一些可能有用的额外信息
1 - 看看这个问题(这是非常基本的东西,可能会有很多帮助)
Basic Ajax send/receive with node.js
2 - 更改此行:
var newData = $("ul.pending") + $("ul.completed");
到此:
var newData = $("ul.pending").html() + $("ul.completed").html();
3 - 此问题将向您展示如何在节点How do you extract POST data in Node.js?
中处理POST