2011-06-27 25 views
0

我工作的Flex應用程序中,我需要調用一些數據與synchonous方法。經過一番研究,我發現了一個使用ajax和外部接口的adobe代碼。那很棒。AJAX POST到的servlet:空參數

the code from adobe

當我用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印刷?

如果請求被髮送,爲什麼沒有參數呢?

如果有人能幫助我,那將是巨大的,因爲我如此搜查對谷歌,以至於谷歌可能會阻止我的垃圾郵件。

編輯:歡迎不能打印??所以......

+1

爲什麼你需要一個同步的請求?我懷疑以這種方式嘗試使用JavaScript,因爲Flash應用程序只是在尋求麻煩。 – JeffryHouser

+0

應用程序需要從servlet中加載一些數據。 httpService對象除了一個細節之外完全可以做到....結果來自結果事件。所以使用這個類(數據庫)使用這個httpService的類(數據)會收到一個空對象,並且當這個類(數據庫)收到結果時,就太遲了。類(數據)已經得到結果。錯誤的結果,但無論如何,結果。 以同步方式調用解決此問題。該函數返回真值。 – blaazzze

+0

你在說什麼?在前端沒有嚴重暗示的情況下執行同步請求是不可能的。沒有任何理由不需要任何後端服務的同步呼叫。我認爲你需要做的是爲你正在嘗試做的事情創建一個更好的架構(我仍然不明白),而不是使用大規模的黑客,以後很可能會破壞別的東西...... –

回答

-1

這是確定的,我已經找到了問題。 這是來自adobe page的JavaScript代碼。

我添加

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
xmlHttp.setRequestHeader("Content-length", params.length); 
xmlHttp.setRequestHeader("Connection", "close"); 

xmlHttp.send(params); 

,現在,我已經從servlet一個很好的答案...

recieved POST 
parameters: 1 
key: username - [Ljava.lang.String;@1cebc9f 

這實在是太酷了沒有使用Flex的JavaScript那個bug,但只有一些缺少requestReader。

+0

沒有理由在Flex中使用ajax。重點是什麼?! –