![](/img/trans.png)
[英]How to forward a request from a servlet to a specific tab of a JSP page?
[英]How to forward JSON data to a servlet page from jquery AJAX request made from a JSP page?
我沒有收到從JSP頁面上的AJAX請求發送的JSON數據。 當我嘗試打印存儲request.getParameterValues(“ json []”)的數組時,出現空指針異常。
我的代碼如下:
HTML:
<form name="form1" method="post" action="dailyWBSupload">
<button class="btn btn-default btn-rect" type="submit" id="taskstodb">Forward</button>
</form>
jquery / AJAX腳本:
var form = $('#form1');
form.submit(function() {
var json = [1, 2, 3, 4];
jQuery.ajax({
type: "POST",
url: "dailyWBSupload",
dataType: 'json',
data: {json: json},
contentType: 'application/json',
mimeType: 'application/json',
success: function(data) {
alert('YES!');
},
error: function(jqXHR, textStatus, errorThrown) {
alert(jqXHR + " - " + textStatus + " - " + errorThrown);
}
});
});
web.xml:
<servlet>
<servlet-name>dailyWBSupload</servlet-name>
<servlet-class>serves.dailyWBSupload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dailyWBSupload</servlet-name>
<url-pattern>/dailyWBSupload</url-pattern>
</servlet-mapping>
我的Servlet(dailyWBSupload.java):
public class dailyWBSupload extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//response.setContentType("text/html;charset=UTF-8");
String[] myJsonData = request.getParameterValues("json[]");
System.err.println("O/P: " + myJsonData[0]);
}
}
從ajax調用中刪除這兩行:
contentType: 'application/json',
mimeType: 'application/json',
或將內容類型更改為:
contentType: 'application/x-www-form-urlencoded;'
更改后您的ajax調用:
$.ajax({
type: "POST",
url: "AnotherServlet",
dataType: 'json',
data: {json: json},
success: function(data) {
alert('YES!');
},
error: function(jqXHR, textStatus, errorThrown) {
alert(jqXHR + " - " + textStatus + " - " + errorThrown);
}
});
有關更多詳細信息, 請參見此答案 。
事實證明,上面的方法是錯誤的,因為即使對它進行了幾次調整,它也一次對我不起作用。 因此,我改變了方法,使用AJAX.updater()方法執行相同的操作。
Javascript:
$("#taskstodb").click(function() {
var table = $('#WBStable').tableToJSON(); // Convert the table into a javascript object
alert(JSON.stringify(table));
var json = JSON.stringify(table);
new Ajax.Request('dailyWBSupload', {
method: 'get',
parameters: {json: json}
});
});
Servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String tabledata = request.getParameter("json");
System.err.println(tabledata);
final String JSON_DATA
= "{" + " \"geodata\": " + tabledata + "}";
System.err.println(JSON_DATA);
final JSONObject obj;
String taskname;
String noOfhours;
try {
obj = new JSONObject(JSON_DATA);
final JSONArray geodata = obj.getJSONArray("geodata");
final int n = geodata.length();
for (int i = 0; i < n; ++i) {
final JSONObject taskinfo = geodata.getJSONObject(i);
taskname = taskinfo.getString("Task");
noOfhours = taskinfo.getString("No. of Hours");
}
} catch (JSONException ex) {
ex.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.