2012-04-17 70 views
2

我有一個包含Flash對象的頁面。在一個特定的動作頁面需要重定向到其他頁面,併發送一些數據(變量)。我正在使用urlvariables和navigateToURL結合起來做到這一點。頁面重定向併發送數據(變量)。as3問題與navigateToURL發佈方法

但問題是數據(變量)正在查詢字符串中發送(我的意思是這樣「http://dummy.php/?first_name=xyz」)。我正在使用post方法發送數據(變量)。我無法像查詢字符串一樣發送數據(變量)。

如何解決這個問題?

PS:我已經寫在這裏下的所有代碼...

var request:URLRequest = new URLRequest("http://dummy.php"); 
var vars:URLVariables = new URLVariables(); 
vars.first_name = 'xyz'; 
request.data = vars; 
request.method = URLRequestMethod.POST; 
navigateToURL(request, "_blank"); 
+0

此代碼看起來正確。它有什麼問題? – 2012-04-17 07:35:34

+0

@PranavHosangadi你看到數據正在作爲查詢字符串被髮送(將被附加到php頁面url的末尾,像這樣「/?first_name = xyz」)。我不希望發生這種情況......你明白我的意思。 – Sravan0313 2012-04-17 07:44:34

+0

@ Sravan0313不,這不會發生在我身上。 URL是乾淨的,並且按照預期通過POST傳遞變量。 – protozoo 2012-04-17 09:53:36

回答

1

你adhereing到規定的各種規則和限制?

發送POST請求時,contentType和data屬性的值必須正確對應。 contentType屬性的值指示服務器如何解釋數據屬性的值。

如果data屬性的值是一個URLVariables對象,那麼contentType的值必須是application/x-www-form-urlencoded。 如果data屬性的值是任何其他類型,則contentType的值應指示將要發送的POST數據的類型(它是數據屬性值中包含的二進制或字符串數​​據)。 對於FileReference.upload(),請求的內容類型自動設置爲multipart/form-data,而contentType屬性的值將被忽略。

在Flash Player 10和更高版本中,如果使用包含上載(在「content-disposition」標頭中以「filename」參數表示的)多部分Content-Type(例如「multipart/form-data」)在POST正文中),POST操作受制於應用於上載的安全規則: 必須執行POST操作以響應用戶啓動的操作,例如鼠標單擊或按鍵。 如果POST操作是跨域(POST目標與發送POST請求的SWF文件不在同一臺服務器上),則目標服務器必須提供允許跨域訪問的URL策略文件。 另外,對於任何多部分Content-Type,語法必須是有效的(根據RFC2046標準)。如果語法看起來無效,則POST操作受應用於上載的安全規則的限制。

也許有些東西導致它默認回到GET請求。

2

我只是做了這個簡單的測試發送一個POST請求到Twitter的搜索API(它似乎接受GET和POST請求)。正如你在附加的截圖中看到的那樣,瀏覽器的URL字段沒有顯示任何變量,而Httpfox(你可以用Firebug,Chrome的開發工具等做同樣的事情)顯示POST按預期傳遞的變量。你發佈的示例代碼是真正導致你麻煩的代碼嗎?下面是我用什麼:對我來說發生

// Create the POST request 
var request:URLRequest = new URLRequest("http://search.twitter.com/search.json"); 
request.method = URLRequestMethod.POST; 

// Create the variables object 
var vars:URLVariables = new URLVariables(); 
vars.q = 'love'; 
vars.rpp = '5'; 
vars.include_entities = 'true'; 

// Attach variables to request object 
request.data = vars; 

// Open new window using the POST request 
navigateToURL(request, "_blank"); 

Httpfox screenshot showing POST vars being passed as expected

1

這個錯誤,當我在做以下幾點:

var vars:URLVariables = new URLVariables(); 
vars.q = 'http://example.com/var1=7&var2=9'; 

的get風格瓦爾顯然不會自動URL編碼,並導致Flash來從設置的POST方法恢復到GET方法。離開時我使用了URL編碼和問題。

vars.q = encodeURIComponent('http://example.com/var1=7&var2=9');