我工作的Flex應用程序中,我需要調用一些數據與synchonous方法。經過一番研究,我發現了一個使用ajax和外部接口的adobe代碼。那很棒。AJAX POST到的servlet:空參數
當我用GET方法來發送數據時,servlet讀取參數和打印一些相關信息(檢查)。但是當我使用POST方法發送數據時,servlet收到請求,但參數消失。
例子:
SERVLET - 獲取
System.out.println("recieved GET");
Map attrib = request.getParameterMap();
System.out.println("parameters: " + request.getParameterMap().size());
for(Object key: attrib.keySet()){
System.out.println("key: "+key.toString() +" - "+attrib.get(key));
}
SERVLET - POST
System.out.println("recieved POST");
Map attrib = request.getParameterMap();
System.out.println("parameters: " + request.getParameterMap().size());
for(Object key: attrib.keySet()){
System.out.println("key: "+key.toString() +" - "+attrib.get(key));
}
FLEX GET方法
var ajax:Ajax = new Ajax(DATABASEURL + "?username=test);
ajax.requestType = AjaxRequestType.GET;
ajax.async = false;
var result:String = ajax.send();
recieved GET
parameters: 1
key: username - [Ljava.lang.String;@4977e2
FLEX POST方法
var ajax:Ajax = new Ajax(DATABASEURL);
ajax.requestType = AjaxRequestType.POST;
ajax.async = false;
var result:String = ajax.send("username='test'");
由servlet印刷:
recieved POST
parameters: 0
什麼問題由servlet印刷?
如果請求被髮送,爲什麼沒有參數呢?
如果有人能幫助我,那將是巨大的,因爲我如此搜查對谷歌,以至於谷歌可能會阻止我的垃圾郵件。
編輯:歡迎不能打印??所以......
爲什麼你需要一個同步的請求?我懷疑以這種方式嘗試使用JavaScript,因爲Flash應用程序只是在尋求麻煩。 – JeffryHouser
應用程序需要從servlet中加載一些數據。 httpService對象除了一個細節之外完全可以做到....結果來自結果事件。所以使用這個類(數據庫)使用這個httpService的類(數據)會收到一個空對象,並且當這個類(數據庫)收到結果時,就太遲了。類(數據)已經得到結果。錯誤的結果,但無論如何,結果。 以同步方式調用解決此問題。該函數返回真值。 – blaazzze
你在說什麼?在前端沒有嚴重暗示的情況下執行同步請求是不可能的。沒有任何理由不需要任何後端服務的同步呼叫。我認爲你需要做的是爲你正在嘗試做的事情創建一個更好的架構(我仍然不明白),而不是使用大規模的黑客,以後很可能會破壞別的東西...... –