0
對於模棱兩可的標題我很抱歉,但是這個問題很難讓我理解,我似乎只能用代碼來描述它。如何繼承jQuery ajax對象或重用常用回調?
我有以下功能
function initRPC(procedureName, parameters)
{
var parcel = //some code that parcels up the procedure name and params
$.get(
'url' : 'rpcserver.php',
'data' : parcel,
'success' : function(returnXML) {
unparcel = //some code to unwrap the returned data
/**
* now instance specific code
*/
}
);
}
凡說now instance specific code
是我想要的特定代碼,以及重用,其餘爲initRPC會被頻繁調用。
例如,我想啓動initRPC這樣的:
function getUsername()
{
alert('Your name is: ' + initRPC('getUsername', { id: someVar }));
}
或像這樣(在這個例子中,命令initRPC的簽名將延伸到包括所傳遞的功能參考,但我不知道如何傳遞參考$。員額回調:
function getUsername()
{
initRPC('getUsername', {id: someVar}, function todoAfterUnWrap(data) {
alert('Your name is: ' + data);
});
}
我看不出做什麼,我希望的方式,那感覺就像我永遠有重複$。阿賈克斯()調用在每個函數中解包和打包(比如getUsername())。
改編:如何封裝數據準備代碼,AJAX請求和解包代碼,然後允許特定代碼在這些代碼之後運行。異步。
[編輯]現在來找我的想法是在這種情況下重用代碼的典型方式如下:
function getUsername()
{
var request = prepareRequest('getUsername', { id: someVar });
$.get(
'url' : 'rpcserver.php',
'data' : request
'success' : function(response) {
response = decodeResponse(response);
/* instance specific code */
}
);
}
也許這是唯一的辦法,它只是在我看來,需要重複多少如getUsername()