我正在處理需要將數據發送到遠程Cognos服務器以運行幾個報告的GWT應用程序。我使用原生JavaScript代碼發送數據,但Cognos服務器不知道如何接收所有數據,我們發送大量數據作爲URL中的參數。這是代碼:gwt使用原生javascript發送遠程服務器的POST請求失敗
private static native void openReportWindow(String action, String uiObject, String reportName, String reportParams) /*-{
var form = document.createElement("form");
form.setAttribute("method", "POST");
form.setAttribute("action", action);
form.setAttribute("target", "reports");
var reportValues = new Array();
reportValues = reportParams.split('&');
for(var i=0;i<reportValues.length;i++) {
var tempArr = new Array();
tempArr = reportValues[i].split('=');
var hiddenField = document.createElement("input");
hiddenField.setAttribute("name", tempArr[0]);
hiddenField.setAttribute("value", tempArr[1]);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
// open a new window to display the reports
window.open(action, 'reports', 'scrollbars=yes,menubar=no,height=600,width=800,resizable=yes,toolbar=no,status=no');
form.submit();
}-*/;
有沒有更好的方法來做到這一點?
感謝您的幫助。
您可以從GWT的Java代碼,而不是下降到JS的請求,看一看有關GWT RPC例子與JSON服務器通話。 – John3136 2012-07-12 23:13:18
謝謝John3136。我在網上做了一個粗略的研究,但似乎JSONP不能用於發送POST請求,這是真的嗎?我需要發送POST請求,因爲我的數據超過了2083個字符 - 需要將其作爲URL參數發送到Cognos服務器。請注意,我不需要處理來自服務器的響應,我只需要發送單向請求。謝謝! – beebris 2012-07-13 00:24:10
你可以看看[Post data to JsonP] [1]的問題。 [1]:http://stackoverflow.com/questions/2699277/post-data-to-jsonp – Arcadien 2012-07-16 09:31:36