作者mygod0520 (省了金錢卻浪費時間...)
看板Flash
標題[問題] AS3.0 呼叫URLLoader問題
時間Fri May 13 20:45:15 2011
/////////////////JSP程式開頭以及輸出格式////////////
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
out.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
out.print("<QString>");
out.print("<Question>"+XMLQuestion+"</Question>");
out.print("</QString>");
XMLQuestion是合成之後的字串
/////////////////////////////////////////////////////
今天遇到一個怪問題...
我的宣告程式碼如下
var ObjStateUrl:String = "
http://xxxxxxxx:8080/ObjectRandomState.jsp";
var ObjStateRequest:URLRequest = new URLRequest(ObjStateUrl);
var ObjStateVar:URLVariables = new URLVariables();
ObjStateRequest.data = ObjStateVar;
var ObjStateLoader:URLLoader = new URLLoader();
//ObjStateLoader.load(ObjStateRequest);
ObjStateLoader.addEventListener(Event.COMPLETE, ObjectStateHandler);
var ObjStateXML:XML;
var StateTemp:String = "";
var ObjArray:Array = [];//用來產生場景上各物件用
function ObjectStateHandler(event:Event):void
{
ObjStateXML = new XML(ObjStateLoader.data);
StateTemp = ObjStateXML.child("ObjectState")[0].toString();
var debugText:TextField = new TextField();
debugText.text = "測試IE是否看的到";
addChild(debugText);
}
//////////其他無關的程式碼或宣告///////
/////////////////////////////////
///////////另一URL///////////////
var ObjStateUrl2:String = "
http://xxxxxxxx:8080/aaa.jsp";
var ObjStateRequest2:URLRequest = new URLRequest(ObjStateUrl2);
var ObjStateVar2:URLVariables = new URLVariables();
ObjStateRequest2.c = d;
ObjStateRequest2.data = ObjStateVar2;
var ObjStateLoader2:URLLoader = new URLLoader();
ObjStateLoader2.load(ObjStateRequest2);
ObjStateLoader2.addEventListener(Event.COMPLETE, ObjectStateHandler2);
var ObjStateXML2:XML;
var StateTemp2:String = "";
function ObjectStateHandler2(event:Event):void
{
ObjStateXML2 = new XML(ObjStateLoader2.data);
StateTemp2 = ObjStateXML2.child("ObjectState")[0].toString();
ObjStateVar.a = b;
ObjStateLoader.load(ObjStateRequest); //執行此URL
}
此swf檔嵌入html網頁中
這個swf檔此段程式碼在IE瀏覽器中不知道為什麼無法執行
ObjStateLoader.load(ObjStateRequest);不會往回執行URL程式
而在Firefox中卻可以正常執行
不知道這IE觀看的問題有辦法解決嗎....
還是說我想往回呼叫URL時應該怎樣改寫才可以執行呢?
麻煩各位大大教我一下>"<
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.135.11.98
1F:→ nhchen760916:IE的FlashPlayer是9以上嗎? 05/14 12:51
2F:→ mygod0520:恩...已經更新到最新了...架在TOMCAT上> < 05/14 12:57
3F:→ nhchen760916:想請問,你怎麼確定"無法執行"呢? 05/14 13:25
※ 編輯: mygod0520 來自: 140.135.11.98 (05/14 13:41)
4F:→ mygod0520:我在上面1的Listener中後來放了一段text 如果有執行 05/14 13:42
5F:→ mygod0520:就會顯示出來 用火狐看的到 IE則沒有QQ 不知道是不是跟 05/14 13:42
6F:→ mygod0520:我把load放在另一個讀取URL處理的listener中呼叫有關 05/14 13:43
※ 編輯: mygod0520 來自: 140.135.11.98 (05/14 13:46)
7F:→ mygod0520:我再上面的Listener中加入text"測試IE..."在2的Listener 05/14 13:48
8F:→ mygod0520:中去呼叫上面的URL IE看不到那段我加的字 火狐可以> < 05/14 13:49
※ 編輯: mygod0520 來自: 140.135.11.98 (05/14 13:50)
9F:→ nhchen760916:在2個ObjectStateHandler中,都加入debugText看看?? 05/14 13:54
10F:→ nhchen760916:然後,第一個顯示訊息、跟第二個顯示訊息不同 05/14 13:55
11F:→ nhchen760916:做為辨識。 05/14 13:55
12F:→ nhchen760916:看起來,你的程式碼,是寫在一個單影格的.fla上? 05/14 13:56
13F:→ mygod0520:恩~是寫在同一影格上QQ 第二個JSP是有確定執行 05/14 13:59
14F:→ mygod0520:不過我佳看看TEXT在遞二個上面看看好了 05/14 14:00
15F:→ mygod0520:剛剛擺上去之後 2的TEXT確定看的到 不過一樣回CALL上面 05/14 14:05
16F:→ mygod0520:URL的TEXT IE使中出不來T_T 05/14 14:05
17F:→ nhchen760916:你可以多監聽幾個事件看看,像是ioError,可能會有 05/14 14:11
18F:→ nhchen760916:幫助。 05/14 14:11
19F:→ nhchen760916:show看看ObjStateRequest是否真的存在, 05/14 14:12
20F:→ nhchen760916:以及把加入debugText的動作,放在ObjectStateHandler 05/14 14:13
21F:→ nhchen760916:內的第一行。 05/14 14:13
※ 編輯: mygod0520 來自: 140.135.11.98 (05/14 14:15)
22F:→ mygod0520:恩恩...我試試看T_T 05/14 14:15
23F:推 nhchen760916:先確認URLLoader是否有發出HttpRequest吧! 05/14 14:18
24F:→ nhchen760916:如果有發出HttpRequest,並且是拿到的資料是錯誤的。 05/14 14:21
25F:→ nhchen760916:就需要檢查一下傳出參數,ObjStateVar.a = b; 05/14 14:22
26F:→ mygod0520:喔喔 發現是IOERROR...可是IE觀看才會發生的IOERROR怎麼 05/14 14:30
27F:→ mygod0520:檢查呢? 我是因為在ERROR Gunction印字才知道QQ 05/14 14:31
28F:→ mygod0520:打錯字 是Function QQ 05/14 14:33
29F:→ mygod0520:不過還是先感謝大大~^^ 05/14 14:36
30F:→ nhchen760916:你可以把ObjStateRequest跟ObjStateUrl,show出來看 05/14 14:39
31F:→ mygod0520:上面這兩個印出來網址沒錯 Request是[Object Request]? 05/14 14:50
32F:→ mygod0520:有辦法看回傳的值是什麼嗎QQ 05/14 14:50
33F:→ mygod0520:或者我XML用法有打錯嗎> < 05/14 14:51
34F:→ nhchen760916:ObjStateVar.a = b,這個b是什麼? 05/14 15:11
35F:→ nhchen760916:你的JSP收到一個a,會做什麼處理,如果a是錯誤值又會 05/14 15:13
36F:→ nhchen760916:會怎麼處理? 05/14 15:14
37F:→ mygod0520:b是一String變數 a是b傳到jsp後找資料庫的資料 並將資料 05/14 15:22
38F:→ mygod0520:將資料合成一個字串 用XML格式out.print回來 05/14 15:23
39F:→ mygod0520:所以傳回來的資料每次都會改變 沒有對錯QQ 05/14 15:24
40F:→ mygod0520:目前查錯誤代碼式串流錯誤...不知道是哪邊寫法有問題 05/14 15:25
41F:→ mygod0520:JSP debug也沒出錯...Orz 05/14 15:25
※ 編輯: mygod0520 來自: 140.135.11.98 (05/14 15:30)
42F:→ mygod0520:我有補上我JSP的標頭 以及印出格式在最上面 05/14 15:33
43F:→ mygod0520:其他JSP內文應該不會有問題...都是資料處理而已+_+ 05/14 15:33
44F:→ mygod0520:不知道是不是哪邊要設定Orz 05/14 15:34
45F:→ mygod0520:!!!剛剛把Request的method設成URLRequestMethod.POST; 05/14 15:42
46F:→ mygod0520:就沒有串流錯誤了!! 趕快測試看看~(狂叫 感謝大大^^ 05/14 15:43
47F:→ nhchen760916:為什麼換POST就好了呢? 05/14 16:44
48F:→ mygod0520:感覺應該是傳入的字串太長導致爆掉了!! 05/14 17:19
49F:→ mygod0520:如果是要跟HTTP URL作溝通的話 我看他文件寫說method要 05/14 17:19
50F:→ mygod0520:使用POST (預設是GET) GET應比較是用來抓取箱對位置的圖 05/14 17:20
51F:→ mygod0520:片之類用的吧~(我猜得QQ) 05/14 17:20
52F:→ nhchen760916:喔喔,原來如此,謝謝喔。 05/14 20:11
53F:→ nhchen760916:IE和FireFox所允許的URL長度不同。 05/14 20:14
54F:→ nhchen760916:IE大約是2kB左右。而FireFox是100KB?? 05/14 20:16
55F:→ nhchen760916:所以在FireFox可以,而到IE卻爆掉。 05/14 20:17
56F:推 nhchen760916:大於2KB的資料傳輸量,使用POST會是較好的選擇。 05/14 20:22
57F:→ mygod0520:我看網路上好像還有人用POST傳3MB的資料也沒問題 只是速 05/15 02:18
58F:→ mygod0520:度上的差異的樣子~這次被搞到以後還真的多學到了一些XD 05/15 02:18
59F:→ mygod0520:還好順利解決掉了0..0+ 05/15 02:19