2012-06-08 40 views
0

我在从我的动态生成的Javascript窗体调用servlet doPost方法时面临一个问题。无法从JS窗体调用servlet doPost方法

var form = document.createElement("form"); 

    form.setAttribute("action", 'cisco-fetch-devices'); 
    form.setAttribute("method", 'POST'); 

    var hiddenField = document.createElement("input"); 
    hiddenField.setAttribute("type", "hidden"); 

    hiddenField.setAttribute("name", 'hiddeninputfield'); 
      hiddenField.setAttribute("value", data); 

    form.appendChild(hiddenField); 
    document.body.appendChild(form); 

    form.submit(); 

但是我能够调用同一个servlet'思科取的设备从一个jQuery Ajax调用:

$.post("cisco-fetch-devices", { orderId : data}, 
    function(data) { 
    alert("Data Loaded: " + data); 
    }); 

的JS动态表单提交正在产生“找不到文件错误”

这里是我的doPost方法:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
     { 



      response.setContentType("text/csv"); 
      response.setHeader ("Content-Disposition", "attachment;filename=\"tableincsv.csv\""); 

      String orderId = request.getParameter("orderId").toString(); 
      java.io.PrintWriter out = response.getWriter(); 
      out.print("TEST DAta"); 


     } 

可否请你让我知道什么可能是我在JS的传统POST调用ssue?

感谢, 阿迪亚

+0

我不确定可能会是。但是我在这里发布已经很长时间了。今天我收到了包括你们在内的几个快速答案。 –

+0

你可以回去检查你的问题,看看他们是否已经回答 - 只要它真的回答了问题,接受答案永远不会太晚。 –

+0

_JS动态表单提交正在生成'文件未找到错误'_:您能否提供更多详细信息?像网址和详细的消息,如果有的话(听起来像一个404错误,但也许你会注意到;-)) –

回答

1

你发送将不会是相同的数据 - 你hiddeninputfield场应该命名为orderId,并且与订单ID进行初始化。或者,你可以解析hiddeninputfield请求参数,但这似乎很愚蠢。

jQuery调用正确发送一个orderId表单值。

这本来是很简单的看到这orderId是在servlet null调试这一点,和/或通过查看浏览器发送的看到了正在发送的参数,以及如何实际要求。

+0

感谢您的建议。修改了代码。但错误仍然存​​在'HTTP 500内部服务器错误'页面未找到。任何投入? –

+1

@AdityaR你需要调试。确保请求是一样的。看看'doPost'中发生了什么。正常的调试过程 - 我看不到你的服务器的日志,所以我不知道是什么导致了500响应。 –

相关问题