【问题标题】:Can't submit JSON object to JSP无法向 JSP 提交 JSON 对象
【发布时间】:2014-08-18 19:34:48
【问题描述】:

我正在尝试将 JSON 对象发送到 JSP 进行解析。 JavaScript 代码是:

function sendData(field1, oper1, value1, field2, oper2, value2, field3, oper3, value3){
        var formData = {"field1":field1, "oper1":oper1, "value1":value1, "field2":field2, "oper2":oper2, "value2":value2, "field3":field3, "oper3":oper3, "value3":value3};
        $.post("<%=request.getRequestURL().toString()%>getInfo.jsp", {formData:formData}, function(response){alertHere(response)});
    }

function alertHere(){
        window.alert("Post Successful!")
    }

我的提交按钮是:

<input type="submit" value="SEARCH" name="submit" class="srchbutton" onclick="sendData(document.getElementById('field1').value, document.getElementById('oper1').value>

点击时 JavaScript 按钮中还传递了几个字段,我只是不想发布那么长的一行。

当我尝试在表单中发布文本数据时,我的 Web 开发人员控制台会快速闪现到我的 JSP 的路径,然后消失。看到错误太快了。如果没有数据,则帖子成功,因为我在$.post() 中的alertHere 函数被正确调用。我不确定我是否遗漏了什么。

【问题讨论】:

  • 尝试阅读 Chrome 的开发者工具“ctrl + shift + i”中的错误并点击控制台。这是一个很好的调试视图,不应该丢失信息。
  • 同时检查网络面板/选项卡。
  • 它不应该是 JSP。
  • @nikpon 我们不知道是否有处理调用的 Servlet。请注意,您可以拥有一个 servlet,其 URL 可以是有效 JSP 的确切 URL,但 servlet 将处理请求,而不是 JSP。
  • 你检查过服务器日志吗?它说什么。请求到达服务器了吗?

标签: java javascript jquery json jsp


【解决方案1】:

假设您在服务器端有一个 servlet,它处理您从 jsp 页面发送的数据,您可以使用 javascript 创建一个伪类,然后将其解析为 json,最后将其发送到服务器。例如:

javascript 和 jQuery

function SomeClass (){
  this.field1 = $("#field1").val();
  this.oper1 = $("#oper1").val();
  this.value1 = $("#value1").val();
  // etc. for every field you want to send
}

注意:我假设每个字段都有一个 id。

function alertHere(){
   window.alert("Post Successful!")
}

jQuery 和 ajax

$("#someID").click(function(){
    event.preventDefault(); <-------- if you replace the submit button for a simple button,
                                      you don't need to do this.
    var formData = new  SomeClass();

    $.ajax({
      url:"ServletName", 
      data: JSON.stringify(formData), 
      dataType:"json",
    }).done(function(response){
         alertHere(response);
    });

});

html

<input type="submit" value="SEARCH" id="someID" name="submit" class="srchbutton">

【讨论】:

    【解决方案2】:

    尝试更改这行代码

    $.post("<%=request.getRequestURL().toString()%>getInfo.jsp", {formData:formData}
    

    $.post("<%=request.getRequestURL().toString()%>getInfo.jsp", {formData:Json.stringify(formData)}                         
    

    不完全确定这是否可行,只是一个建议。

    【讨论】:

      【解决方案3】:

      想通了。问题是我没有将我的“响应”传递给我的成功函数,所以:

      function alertHere(){
          window.alert("Post Successful!")
      }
      

      应该是:

      function alertHere(response){
          window.alert("Post Successful!")
      }
      

      它可能发布正确,但我没有成功,因为响应没有通过。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        • 2017-07-01
        • 2011-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多