从客户端(html)获取数据并将其发送回服务器站点(Server.js)Node.Js

时间:2018-05-29 21:18:09

标签: javascript html node.js mongodb

我正在尝试创建自己的TODO-WEB-APP。

我正在尝试为我的应用添加删除功能。

我正在使用从server.js获取请求,并将(通过res.render)任务数组传递给hbs文件。

现在,在我从server.js获取数据后,我将其显示在hbs文件中,然后我想让用户选择他想要删除的任务。

我的问题是,一旦用户选择要删除的任务,我就不知道如何从hbs中获取此数据。

server.js中的代码(请求):

    <form id="delete">
      <input value="Delete" type="submit">
    </form>
<select id = "chooseDelete" form="delete">
        <option> Choose task to delete</option>
        {{#each todos}}
        <option>{{missionNumber}}</option>
        {{/each}}
        </select>

hbs文件中的代码:

<p id="demo"></p>
        <button id="deleteButton">Delete</button>

        <script>
        deleteButton.addEventListener("click", function(){
            document.getElementById("demo").innerHTML =  document.getElementById("chooseDelete").value;
        });
        </script>

通过这种方式,我得到了地址行的值,但我不知道如何抓住它并将其发送到server.js。

以这种方式:

document.getElementById("chooseDelete").value;

我只是得到了价值: public void dospeak(String speak,String voicename) { speaktext=speak; String voiceName =voicename; try { System.setProperty("FreeTTSSynthEngineCentral", "com.sun.speech.freetts.jsapi.FreeTTSEngineCentral"); System.setProperty("freetts.voices", "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory"); Central.registerEngineCentral("com.sun.speech.freetts.jsapi.FreeTTSEngineCentral"); SynthesizerModeDesc desc = new SynthesizerModeDesc(null,"general", Locale.US,null,null); Synthesizer synthesizer = Central.createSynthesizer(desc); EngineList engineList = Central.availableSynthesizers(desc); EngineCreate creator = (EngineCreate)engineList.get(0); List<Synthesizer> bagOfSynthesizers = new LinkedList<Synthesizer>(); int numberSynthesizers=1; for (int i = 0; i < numberSynthesizers; i++) { synthesizer = (Synthesizer)creator.createEngine(); bagOfSynthesizers.add(synthesizer); synthesizer.allocate(); synthesizer.resume(); desc = (SynthesizerModeDesc) synthesizer.getEngineModeDesc(); } Voice[] voices = desc.getVoices(); Voice voice = null; for (int i = 0; i < voices.length; i++) { if (voices[i].getName().equals(voiceName)) { voice = voices[i]; break; } } synthesizer.getSynthesizerProperties().setVoice(voice); System.out.print("Speaking : "+speaktext); synthesizer.speakPlainText(speaktext, null); synthesizer.waitEngineState(Synthesizer.QUEUE_EMPTY); synthesizer.deallocate(); } catch (Exception e) { String message = " missing speech.properties in " + System.getProperty("user.home") + "\n"; System.out.println(""+e); System.out.println(message); } } 但同样,我不知道如何将其传回服务器。

[你可以看到这张照片] [1]

如果可以,请帮助我。

1 个答案:

答案 0 :(得分:0)

我建议你做一个Ajax DELETE请求。

所以...基本上你会得到你的taskID来删除并使用DELETE请求将ID发送到你的服务器。

我将举例说明:

  1. 选择要删除ID 1的任务。
  2. 获取选定的任务ID以准备发出Ajax请求
  3. 在资源DELETE /task/1
  4. 上发出Ajax请求
  5. API会将状态代码204 No Content404 Not found返回到未找到的项目,并根据您的需要返回更多内容。