我使用廣泛的AJAX和我的基於PHP的通知系統是不夠的。jQuery通知,首先不顯示
我有這樣的功能:
<script>
function user_notify($string, $class){
if($class == null){
$class = 'error';
}
$('<div class="' + $class + '"><div class="notification-text">' + $string + '</div></div>').hide().appendTo('#system-notifications').fadeIn('slow');
}
function DeleteTask(SpanName, TaskId){
if (confirm("Are you sure you want to delete this task?")) {
var curDateTime = new Date(); //For IE
var status = document.getElementById('status');
var poststr = "uniqueID=" + curDateTime.getTime() ;
var SpanName = SpanName;
if(SpanName == 'project_todos_complete'){
var showCompleted = 1;
} else {
var showCompleted = 0;
}
//alert (SpanName);
makePOSTRequest('http://*****webdesigns.com/project_manager/include/ajax/global.php?action=delete_task&showCompleted=' + showCompleted + '&id=' + TaskId, poststr, SpanName);
}
if(ajax_status == 4){
user_notify('Task deleted.', 'success');
ajax_status = null;
}
}
</script>
我有持有readyState的一個全球性的javascript變量。如果4是來自服務器的響應,我們可以假設AJAX是成功的(我知道,如果有的話,cgi/php是不會執行的)。所以我將它存儲起來,並且在調用AJAX帖子的函數中,如果readyState是4,我就調用user_notify函數。
它工作得很漂亮,但有一個例外:應該觸發通知的第一個動作不會。所有連續操作都成功生成一條消息。這不是一個不起作用的具體行動,只是第一個。
的HTML:
<body>
<div id="system-notifications"></div>
<div class="wrapper">...</div>
缺少什麼我在這裏?
UPDATE:
我在移動遺留的JavaScript/AJAX調用的jQuery /阿賈克斯的過程。除了一個方面外,一切都有效:目標div不會使用來自.ajax jQuery調用的返回數據進行「刷新」。彈出通知(第一次和所有連續的時間),php執行(刷新頁面驗證了這一點),但div不會更新PHP腳本生成的html。
$('form#addToDoForm').submit(function(){
var project_id = $('#addToDoForm input[name=project_id]');
var assigned_id = $('#addToDoForm input[name=assigned_user_id]');
var description = $('#addToDoForm textarea[name=description]');
var responsible_id = $('#addToDoForm input[name=responsible_user_id :selected]');
alert(responsible_id.val());
return false;
var due = $('#addToDoForm input[name=due]');
var result_div = 'project_todos_' + project_id;
var query_string = 'action=add_to_do&id=' + project_id;
var ajax_url = 'http://avwebdesigns.com/basecamp/include/ajax/global.php?' + query_string;
var successMessage = '<b>' + description.val() + '</b> added.';
var data =
'project_id=' + project_id.val() +
'&assigned_user_id=' + assigned_id.val() +
'&responsible_user_id=' + responsible_id.val() +
'&description=' + encodeURIComponent(description.val()) +
'&due=' + encodeURIComponent(due.val()); // encodeURIComponent()
$.ajax({
type: 'POST',
url: ajax_url,
data: data,
cache: false,
success: function(data){
$('#'+result_div).html(data); // $('#'+result_div).html(data.returnValue);
user_notify(successMessage, 'success');
},
error:function(data){
$('#'+result_div).html(data);
user_notify(failureMessage, 'error');
}
});
return false;
});
任何想法?
我認爲這是類似的東西,其中全局變量是從以前的調用剩餘的。但是你會看到我在檢查並確認之後做了無效處理。 callbakc函數聽起來就像解決方案。 – AVProgrammer