MozTW 討論區 https://forum.moztw.org/ |
|
[問題]Ajax::Request in prototype.js https://forum.moztw.org/viewtopic.php?f=13&t=21852 |
第 1 頁 (共 1 頁) |
發表人: | legnaleurc [ 2008-03-07, 11:31 ] |
文章主題 : | [問題]Ajax::Request in prototype.js |
如果在Ajax.Request裡使用onSuccess或onComplete的callback,可以正常parse出responseText的資料 但是因為我希望parse出來的JSON可以被其他物件使用 因此我嘗試把Ajax.Request的實體儲存起來 然後使用evalResponse的method 結果有時成功有時失敗(失敗居多) responseText的值經常是空的 在callback的作用域是全域,所以沒辦法用this 有比較好的方法嗎?或是可以用object factory? |
發表人: | kourge [ 2008-03-08, 12:54 ] |
文章主題 : | |
比較最近的 Prototype 版本有在 String.prototype 上面加上 evalJSON 這個方法,所以可以這樣: 代碼: onSuccess: function(transport){
var json = transport.responseText.evalJSON(); } 至於要讓 JSON 可以被其他物件使用...這是比較程式結構的東西,it's not Prototype-specific per se。通常我的作法有兩種: 一、讓函式的參數接受 JSON 資料。這樣就可以呼叫方法的時候一併把 JSON 資料遞入。 二、擺在某個 namespace 裡面,然後該 namespace 的其他方法被呼叫的時候會去檢查有沒有 JSON 資料。 |
發表人: | legnaleurc [ 2008-03-08, 21:27 ] |
文章主題 : | |
kourge 寫: 一、讓函式的參數接受 JSON 資料。這樣就可以呼叫方法的時候一併把 JSON 資料遞入。
二、擺在某個 namespace 裡面,然後該 namespace 的其他方法被呼叫的時候會去檢查有沒有 JSON 資料。 不是很懂.... 意思是在onSuccess的callback裡讓它跟外部溝通嗎? 這是我寫出來的測試頁 可以看到onSuccess是在整個整體被回傳之後才觸發(應該是這樣吧?) |
發表人: | kourge [ 2008-03-10, 05:49 ] |
文章主題 : | |
意思是說 onSuccess always works,但 evalResponse sometimes fails 嗎? 那這樣的話...就依賴 onSuccess: 代碼: onSuccess: function( transport ) {
this._data_ = transport.responseText.evalJSON( true ); }.bind(this), 這樣 onSuccess 應該可以成功地存取 this。 還有...請千萬千萬不要動 Object.prototype,因為這樣會讓 iteration 整個亂掉...有 Object.inspect 可以用。 看來你寫 JS 的 style 很有 Python 味。 |
發表人: | legnaleurc [ 2008-03-10, 12:05 ] |
文章主題 : | |
kourge 寫: 意思是說 onSuccess always works,但 evalResponse sometimes fails 嗎? 那這樣的話...就依賴 onSuccess: 代碼: onSuccess: function( transport ) { this._data_ = transport.responseText.evalJSON( true ); }.bind(this), 這樣 onSuccess 應該可以成功地存取 this。 啊,都忘了有bind可以用 不過這次修過之後發現非要做alert的動作才可以讓this._data_抓到物件 個人推測原因是Ajax.Request開了另一條thread 在底下用到this._data_時onSuccess尚未觸發 如果不alert拖時間的話,底下物件存取高達八成會失敗 所以我很乾脆地把底下的動作都放到onSuccess裡了= = 但是這次變成class method定義時this._map_尚未有定義 不知道有沒有同步溝通的機制 kourge 寫: 還有...請千萬千萬不要動 Object.prototype,因為這樣會讓 iteration 整個亂掉...有 Object.inspect 可以用。 我就是發現它會造成整個Prototype發瘋才註解掉的(汗) 當初好像是因為想自訂輸出格式才會弄個__str__ kourge 寫: 看來你寫 JS 的 style 很有 Python 味。
被發現了XD 我朋友也跟我提過我寫的pseudocode長得和Python很像 我自己是不知不覺就會寫成這樣:P |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |