PDA

View Full Version : سوال: مشکل با باز کردن دیالوگ جدید



numberone1
پنج شنبه 05 دی 1392, 17:58 عصر
سلام

من این کد و میزارم میخوام یک دیالوگ با jqueryui باز بشه و یک پیغام ثابت داخلش نمایش داده بشه
ولی بجای اینکه پیغام و نمایش بده کا صفحه ریفرش میشه!!

بعد یه سئوال دیگه هم اینکه چطور میشه بجای تابع time در php از یک تابع معادل در js استفاده کنم که درخواست ها کش نشن


<script type="text/javascript">
$(document).ready(function() {
$(document).on('click', '.show',function(){
var id = $(this).attr('title');
var subject = $(this).text();
$('#show-message-box').prop('title',subject);
$('#show-message-box').dialog({
modal:true,
height: 400,
width: 600,
position: ['top', 20],
buttons: {
Ok: function() {
$(this).dialog( 'close' );
$('#show-message-box').html('');
}
}
});
$.ajax({
type : "POST",
data : {id : id},
url : "ajax/message.php?a=<?php echo time("NOW");?>",
beforeSend : function (){
$('#view').html('Loading ...');
},
success : function(data){
$('#show-message-box').html(data).dialog('open');

},
complete : function (){
$('#view').hide();
}
});
});
});
</script>

Javidhb
جمعه 06 دی 1392, 00:35 صبح
برای کش نشدن ایجکس میتونید از:

$.ajax({

url: "test.html",

cache: false

})

//یا
//http://api.jquery.com/jQuery.ajaxSetup/
$.ajaxSetup({
cache: false
});
$.ajax(....




استفاده کنید.

معادل ()time توی جاوااسکریپت::متفکر:

Math.floor(new Date().getTime() / 1000)

منبع (http://phpjs.org/functions/time/)


اما در مورد سوال اول:
شما با firebug توی فایرفاکس یا DevTools کروم (قسمت console) باید ببینید چه اروری یا پیغامی میده...

numberone1
جمعه 06 دی 1392, 12:53 عصر
اینو اضافه کردم بعد از success پیغام alert و نشون داد ولی فقط بعد از چند لحظه کل صفحه ریفرش میشه باز
حتی بعدش return false هم میزارم اثر نمیکنه و کل صفحه در هر صورتی ریفرش میشه!!!
اصلا نمیفهمم چرا اینجوری میشه؟!!


error : function(){
alert ('error');
return false;
},


فقط چیزی که توی فایر باگ میبینم اینه که درخواست ارسال میشه و جوابش هم برمیگرده
بعد از اینکه جوابش برمیگرده درخواست ajax صفحه ریفرش میشه!!!

numberone1
جمعه 06 دی 1392, 12:58 عصر
معادل ()time توی جاوااسکریپت::متفکر:

Math.floor(new Date().getTime() / 1000)

منبع (http://phpjs.org/functions/time/)


منظورم این هست که یک عدد رندوم و یونیک انتهای url اضافه بشه که باعث کش نشدن بشه

Javidhb
جمعه 06 دی 1392, 15:00 عصر
اینو اضافه کردم بعد از success پیغام alert و نشون داد ولی فقط بعد از چند لحظه کل صفحه ریفرش میشه باز
حتی بعدش return false هم میزارم اثر نمیکنه و کل صفحه در هر صورتی ریفرش میشه!!!
اصلا نمیفهمم چرا اینجوری میشه؟!!


error : function(){
alert ('error');
return false;
},


فقط چیزی که توی فایر باگ میبینم اینه که درخواست ارسال میشه و جوابش هم برمیگرده
بعد از اینکه جوابش برمیگرده درخواست ajax صفحه ریفرش میشه!!!

شما کد html رو هم بزارید... اون المنت که کلاس show. داره اگه a یا inputهست باید از return false استفاده کنید اما نه توی تابع ajax.$ :

$(document).ready(function() {
$(document).on('click', '.show',function(){
var id = $(this).attr('title');
var subject = $(this).text();
$('#show-message-box').prop('title',subject);
$('#show-message-box').dialog({
modal:true,
height: 400,
width: 600,
position: ['top', 20],
buttons: {
Ok: function() {
$(this).dialog( 'close' );
$('#show-message-box').html('');
}
}
});

$.ajax({
type : "POST",
data : {id : id},
url : "ajax/message.php?a=<?php echo time("NOW");?>",
beforeSend : function (){
$('#view').html('Loading ...');
},
success : function(data){
$('#show-message-box').html(data).dialog('open');

},
complete : function (){
$('#view').hide();
}
});

return false: //اینجا باید استفاده بشه
});
});

Javidhb
جمعه 06 دی 1392, 15:05 عصر
منظورم این هست که یک عدد رندوم و یونیک انتهای url اضافه بشه که باعث کش نشدن بشه

Math.floor(new Date().getTime() / 1000)


مثل همون تابع time پی اچ پی زمان رو به unix time stamp تبدیل میکنه و میتونید به آخر url اضافه کنید:

var unixTime = Math.floor(new Date().getTime() / 1000);

//...
url : "ajax/message.php?a="+unixTime,
//...


اما بهتره اینجوری بنویسید:
cache : false

$.ajax({
type : "POST",
data : {id : id},
url : "ajax/message.php",
cache : false,
beforeSend : function (){
$('#view').html('Loading ...');
},
success : function(data){
$('#show-message-box').html(data).dialog('open');

},
complete : function (){
$('#view').hide();
}
});