用jetpack寫出來的firefox的plug-in
總算有個有結果的版本~
但問題依然很多
昨天花了點時間處理一個奇妙的問題
由於整個流程會經過三個種語言~
從client端的javascript~利用ajax的方法呼叫php~然後在php中執行java對資料做處理
而最後要在client端顯示的html內容~我在java就拼湊好了
一開始也是試了很久~最後決定在java中拼湊好原始的html~然後做完urlencode後~再一路回傳到client的 javascript~再做urldecode
這個做法可以讓最後顯示在side bar的內容看起來是對的
而且點擊連結後~也能正常的跳出搜尋頁面
但問題就在~在跳出的搜尋頁面中無法再做一次關鍵字推薦
總之又是編碼的問題
就是說~在html中a 和 /a包起來要顯示的關鍵字在回傳時需要作encode
但在 a 的href中~連到google搜尋頁面的網址~其中參數q的值~雖然等於要顯示的關鍵字~但卻不用encode
如果做過encode~在要做第二次關鍵字推薦時~擷取網址列上的Query時~會有問題
為了解決這個問題~
所以嘗試使用jQuery的getJSON~
在java的部分~將每個推薦的關鍵字encode後~存入陣列
最後把陣列做json的序列化~產生對應的字串
將此字串一路回傳~最後透過getJSON還原成對應的資料結構
一切都是如此的理所當然~~
但...
同樣的東西~我在asp用的好好的
在這邊就是有問題~
getJSON怎樣都無法~把java序列化的字串還原..
改用post的方式後~明明就可以看到序列化的字串
試了很多方式~在中間層的php上動了很多手腳
做過很多測試:
1. 在php上產生一個陣列~插入一些測試值~用php的json_encode處理後~回傳給getJSON~
正常~資料結構有被還原
2.在php上先將java產生的json字串~用php的json_decode處理後~回傳還原的陣列中~其中一個cell的值~在javascript中用post接收
正常~顯示出來的的確為指定的值
以上兩個測試只是為了證明php的json_encode和decode都是沒問題的
甚至將java產生的json字串複製後~在php中貼上直接回傳給javascript都沒有問題~getJSON依然可以還原
但....
直接將java產生的字串回傳到php再回傳到javascript~getJSON就是無法還原對應的資料結構...
這問題真的搞了很久...
因為我一直覺得字串在這三層互相傳遞中~其中兩層的互傳時~一定要先編碼
而我也一直認為這兩層一定就是javascript和php
所以~這問題我想了很久都解決不了
直到...
我嘗試在php中將java回傳的json字串還原後~拼湊好html~再用post回傳給javascript
我發現~這樣顯示居然是正常的
原來需要編碼才能傳遞的兩層是~php和java
雖然解決了這個問題~~
但getJSON的問題還是無解啊!!!
沒有留言:
張貼留言