我目前有一個基於網絡的應用程序,它嚴格依賴第三方soap服務器爲網站提供信息。這個應用程序幾乎沒有JavaScript,幾個元素從jQuery UI和幾個jQuery的東西(比任何其他原因更簡單)。具有多種功能的jQuery插件
這個應用程序的功能增強了,我的想法基於我們依賴於數據的soap服務器,每個soap請求都需要一次往返,我們真的想減少在一個http請求中進行多次往返。因此,我的想法是使應用程序基於Ajax,只更新用戶希望看到的內容區域。
所以我們有這個基於php的服務器端庫,它使用soap獲取信息,生成HTML並將數據發送給用戶。現在樂趣開始了,我們希望採用這個服務器端代碼並使其成爲模塊化,並構建一個jQuery插件來與服務器端進行交互。我遇到麻煩的部分是如何在插件中使用多個函數(也許這是錯誤的方法,請更正我),我可以隨意調用每一個函數。
的基本思想如下:
皁服務器允許訪問所有的基礎表,每個表具有一個特定的WSDL和定義了一組可用於每個表的功能。這些功能對於所有表格都是相同的。
我們有一個例子:
- 得到
- getRecords
- 插入
- 更新
刪除
(function($){ var methods = { init: function(options){ //initialize the plugin return this.each(function(){ var $this = $(this), data = $this.data(); }); }, get : function(id){ var getQuery = 'sys_id='+id; $.ajax({ type: "POST", url: "get.php", data: getQuery, cache: false, success: function(result){ if(result.error){ //error notify user error occured... }else{ //success, update user ... } } }); return false; }, getRecords : function(){ }, }; $.fn.myPlugin = function (method){ if(methods[ method ]){ return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1)); }else if(typeof method === 'object' || !method){ return methods.init.apply(this, arguments); }else{ $.error('Method ' + method + 'does not exist on jQuery.ServiceNow'); } }; })(jQuery);
因此,撥打肥皂服務器需要一個ID來標識表中的哪條記錄,getRecords呼叫接受查詢並返回多條記錄,插入插入記錄,更新更新記錄等。
要執行獲得致電我想做一些如:
$("#div").myPlugin.get(arguments);
的結果將是使用id =「格」的股利將與任何get函數的插件爲myplugin返回定義與做更新元件。
這是正確的方法,有沒有更好的方法,我都溼嗎?這是我的第一個jQuery插件,我覺得我來自面向對象的世界,我習慣於構建事物,然後調用它們的函數/方法和/或使用字段。也許這是我的心態關閉的問題。
感謝意見/反饋!
我的想法是在jQuery插件中構建類似的東西,以便能夠將這些調用傳遞給服務器,並且服務器上的php將根據您想要的資源來確定WSDL位置。
有幾個帖子沿着類似的路線,所以我不認爲你遠離你想要做的事情,你只是調用稍微不同的東西,在你的插件中使用字符串和開關來改變函數用戶:[與多個功能的jQuery插件](http://stackoverflow.com/questions/2624489/jquery-plugin-with-multiple-functions),[創建一個多功能的jQuery插件](http:// stackoverflow。 com/questions/4096451 /創建一個jQuery的插件與多功能) – Scoobler 2011-02-01 14:30:35
@Scoobler:不知道我是如何錯過了這些,我發誓我拖了SO搜索jquery插件相關的材料昨晚整晚問任何事情。感謝您將我鏈接到這些帖子。 – Chris 2011-02-01 14:36:01