AJAX是否有任何標準或消息框架?帶AJAX的標準事件消息傳遞系統?
現在我有一個使用Ajax加載內容的頁面。因爲我有一個複雜的數據輸入表單作爲我的內容的一部分,所以我需要驗證可能發生在我的表單中的某些事件。所以經過我的測試驅動的一些調整:
asyncShould("search customer list click", 3, function() {
stop(1000);
$('#content').show();
var forCustomerList = newCustomerListRequest();
var forShipAndCharge = newShipAndChargeRequest(forCustomerList);
forCustomerList.page = '../../vt/' + forCustomerList.page;
forShipAndCharge.page = 'helpers/helper.php';
forShipAndCharge.data = { 'action': 'shipAndCharge', 'DB': '11001' };
var originalComplete = forShipAndCharge.complete;
forShipAndCharge.complete = function(xhr, status) {
originalComplete(xhr, status);
ok($('#customer_edit').is(":visible"), 'Shows customer editor');
$('#search').click();
ok($('#customer_list').is(":visible"), 'Shows customer list');
ok($('#customer_edit').is(":hidden"), 'Does not show customer editor');
start();
};
testController.getContent(forShipAndCharge);
});
這裏是獲取內容的控制器:
getContent: function (request) {
$.ajax({
type: 'GET',
url: request.page,
dataType: 'json',
data: request.data,
async: request.async,
success: request.success,
complete: request.complete
});
},
,這裏是請求事件:
function newShipAndChargeRequest(serverRequest) {
var that = {
serverRequest: serverRequest,
page: 'nodes/orders/sc.php',
data: 'customer_id=-1',
complete: errorHandler,
success: function(msg) {
shipAndChargeHandler(msg);
initWhenCustomer(that.serverRequest);
},
async: true
};
return that;
}
這裏是一個成功處理程序:
function shipAndChargeHandler(msg) {
$('.contentContainer').html(msg.html);
if (msg.status == 'flash') {
flash(msg.flash);
}
}
而且在我的服務器端我結束了一個JSON結構看起來像這樣:
$message['status'] = 'success';
$message['data'] = array();
$message['flash'] = '';
$message['html'] = '';
echo json_encode($message);
所以現在載入內容由兩個部分組成:
- HTML,這是演示的形式。
- 數據,這是一個需要加載的形式
- FLASH,任何驗證或服務器錯誤
- 狀態告訴客戶端所發生的事情在服務器上的任何數據。
我的問題是:這是一種處理客戶端事件消息的有效方法,還是我要走下一條心痛和痛苦的道路?
你註冊了編程,一個心痛和痛苦的道路是放心的,這是否會有助於空氣:) – 2010-05-26 15:13:52
如果你一直在走自己的道路(我最終做了什麼夢幻般的結果)你可能想要實現一個全局事件來處理消息。您可以附加到ajaxComplete(http://api.jquery.com/ajaxComplete/)事件並直接從xhr獲取結果,然後檢查是否有消息要處理。我實現了像SO一樣的下拉消息,最上面有三個級別:警告,狀態和錯誤(錯誤是一個對話框)。 – 2010-05-26 15:25:54
我認爲這會更多的陰/陽(疼痛/愉悅)。他們在哪裏說快樂部分是? – Gutzofter 2010-05-26 15:29:26