【问题标题】:How to send the json data response to the particular Url(Server) from Servlet?如何从 Servlet 将 json 数据响应发送到特定的 Url(Server)?
【发布时间】:2015-06-04 15:12:38
【问题描述】:

我有以下代码,它以 json 格式数据作为 html 表单中的输入变量。

out.write("<html><body onload=\"document.forms[0].submit()\">\n");
      out.write("<form  enctype='application/json' method=\"POST\" action=\"" + resourcePath + "\">\n");
      out.write("<input name='sessionId' value=\"" + sessionId + "\"/>\n");
      out.write("<input name='sessionValid' value=\"" + true + "\"/>\n");
      out.write("</form>\n</body>\n</html>\n");

我已经对此进行了谷歌搜索,我得到了上述格式,但它不起作用,在提交表单后阅读时它仍然被视为普通字符串。我在堆栈溢出中也看到了相同类型的问题,但他们指示我使用我不想使用的 jquery。

上面的代码可能有什么问题?

【问题讨论】:

  • 首先,尝试生成一个 jsFiddle,以便我们可以看到您的工作示例。第二,您有使用 ajax 的能力吗?这将允许您序列化表单并发送一个 json 对象。以后扩展的方法更简单更好。我还注意到您不想使用 jquery ...但在这种情况下不需要这样做..您有可用的 PHP/服务器端语言吗?还是只是原始的 HTML 页面?
  • 现在我不能在我的代码中使用 ajax。我不会为代码生成 jsFiddle
  • 您检查浏览器控制台是否有任何脚本/请求错误?通常在大多数现代浏览器中按 F12 .. 如果您还没有,也请参考 darobin.github.io/formic/specs/json
  • @Mayhem,请检查已编辑的问题标题,这是我的实际要求
  • “resourcePath”是一个有效的变量吗,...使用我下面的示例。如果您手动将 resourcePath 的值输入到 action=""... 它是否按预期工作?

标签: html json servlets


【解决方案1】:

根据给出的当前示例很难判断,似乎存在更多语法错误,或者浏览器或提交到服务器端可能存在问题。

这是一个简单的基本示例,如果您有 PHP,可以对其进行测试...只需创建一个 test.php 文件或其他文件并使用以下代码。如果这可行,那么它将是使用的变量或它们被创建/回显的方式。

<?php
    if (isset($_REQUEST['sessionId'])) {
        echo "<pre>".print_r($_REQUEST, true)."</pre>";
        exit;
    }
?>
<form enctype='application/json' method="POST">
    <input name='sessionId' value="has7ft8f7w56ef78wte"/>
    <input name='sessionValid' value="true"/>
    <button type='submit'>Submit</button>
</form>

如果您能提供更多信息,我会在这种情况下尽我所能提供帮助。有时当事情不起作用时。最好回到基础进行测试,然后看看哪里出了问题。

编辑

<form enctype='application/json' method="POST" action="myurl_or_where_ever">
    <input name='sessionId' value="has7ft8f7w56ef78wte"/>
    <input name='sessionValid' value="true"/>
    <button type='submit'>Submit</button>
</form>

通过像这样简单的测试,您可以确保基本概念有效。如果有效,则首先更改 action=""。如果有效,然后更改 sessionId/Valid..按钮是为了简单地排除 onload 事件。这是调试的一部分,将来会为您节省大量时间。

将“myurl_or_where_ever”替换为“resourcePath”的预期值

【讨论】:

  • 我没有 php,请查看我编辑的问题,我不想放任何提交按钮。
  • 基本上这只是一个简单的手动测试...将在一秒钟内更新答案..但是尝试创建表单的静态版本..所以没有变量,没有 out.write.. 只是一个使用提交按钮将表单提交到预定义操作/url 的纯 HTML 文件。这排除了语法、动态方面。
  • 我试过了,表单按预期工作,但我没有得到 JSON 形式的响应,它以普通键:值对的形式出现
  • 所以它不是表单/url本身的问题。你在servlet方面使用什么代码。我的猜测是处理HTTP请求的是将JSON转换为另一种格式..我通常避开任何Java ..但是如果您可以发布/更新您的servlet处理程序。
  • 我的 enctype='application/json' 工作不正常吗?
猜你喜欢
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
相关资源
最近更新 更多