Леки поправки по jquery написан код

eddyy93

Registered
Как би станало при този код, ако PHP файла върне грешка, тоест никъква информация не се запише. То тогава аз да разбера и съответно да си покажа грешките.

Във success () най - вероятно трябва да се напише нещо, също така и във test.php предполагам трябва да сложа, че не е преминало успешно записването, но нямам представа какво.

[js]
function submitForm() {
$.ajax({
type:'POST',
url: 'test.php',
dataType: 'json',
data:$('#myForm').serialize(),
success: function() {

}
});

return false;
}
[/js]

Другото което е:

Този код ми рефрешва един div за да ми изкара нови съобщения. Така проблема е там че скрола трябва да го направя винаги да е долу (както е във facebook чата), направих го това със animate(), обаче проблема е там, че дива като се рефрешва през секунда, не ми позволява да регулирам скрола на горе. Смисъл аз го качвам до някъде, но мине ли секунда веднага слиза обратно долу заради рефреша на дива, как да го избегна това?

[js]
var auto_refresh = setInterval(
function()
{$('#middle').animate({scrollTop:$("#middle")[0].scrollHeight}, 0).load('test2.php');}, 1000);
[/js]
 
във succes Му дай да ти зареди файла
Код:
$("#mydiv").load("file.php");
и то ще ти покаже какво е върнал самия файл...

а за рефрешка,преди 1 час си писах нещо подобно и да ти кажа,няма нужда от скрул,рефрешва само файла и съответно няма да излизат повече от колкото си дал в LIMIT във php файла
Код:
<div id="whatisnew"></div>
<script type="text/javascript">
$('#whatisnew').load('whatisnew.php');
var auto_refresh = setInterval(
function ()
{
$('#whatisnew').load('whatisnew.php').hide().fadeIn('slow');
}, 30000);
</script>
30 sekundi е интервала
Дано съм помогнал.
 
Направих го така, както каза. Направих си един div "mydiv", пуснах едно echo във php файла и нищо не се показва във този div.



ЕДИТ: То това е един малък чат и ми трябва да има скорл, все пак ако ти потрябва някаква хронология, трябва да скролнеш и да в видиш.
 
eddyy93 каза:
Направих го така, както каза. Направих си един div "mydiv", пуснах едно echo във php файла и нищо не се показва във този div.



ЕДИТ: То това е един малък чат и ми трябва да има скорл, все пак ако ти потрябва някаква хронология, трябва да скролнеш и да в видиш.
Дивът трябва да е преди зареждането на script-а...
или го сложи във
Код:
$(document).ready(function() {
  //tuk koda
});
защото реално ако скрипта е преди файла,се опитва да го ипзълни на незареден (все още не съществуващ) див.
Друг вариант не виждам да не работи

ps:По-кратък код:
Код:
$("#myform").submit(function(){
$.post("test.php", $("#testform").serialize());
$("#showresult").load("test.php")
});
 
За скрула освен да му дадеш едно условие АКО СКРУЛВАМ НЕ ИЗПЪЛНяваЙ СКРУЛ ДАУН ,нещо такова:
Click
или scroll() документацията
Click
 
Няма нужда от load в post или ajax. Точно success се ползва.
Код:
success: function(data) {
alert(data);
}
data съдържа отговора от php кода. Ако в php имаш echo то това ще се покаже в alert прозореца. Най-добре е според мен да е echo(json_encode($array)), а с jquery да го направиш с $.parseJSON(data) и т.н. Пък може и просто от php echo 'грешка'.
 
Самото зареждане на файла зависи от файла,тоест ако зарежда 2-3 думи от php файл , или 2-3 думи чрез твоя метод не мисля,че ще има разлика...?
Аз го ползвам този метод и нито забавя нито нищо.

И все пак изчакавам eddy да каже до къде е стигнал.
 
Незнам защо, но при мен изобщо не се получава ...

Пиша го така:

[js]function submitForm() {
$.ajax({
type:'POST',
url: 'send.php',
dataType: 'json',
data:$('#myForm').serialize(),
success: function(data) {

alert(data);
}
});

return false;
} [/js]

Във send.php, слагам в началото на файла:

PHP:
echo 'test';

И нищо не се показва във браузера след пращане на формата. Къде греша?



Другото е за този скрол, как да ги направя тези проверки ако скролвам да не изпълнява скрол доуна или да не рефрешва дива (тоест да не се изпълнява тази функция на auto_refresh). Но пък ако пусна скрола автоматично ще ме вкара пак долу и примерно ако искам да копирам текст, няма как да стане.




EDIT: Справих се със първата задача да връща грешки, разбрах къде е проблема <-- Бил е в мен. : )))

Остава само за скрола.
 
Ами нещо такова трябва да е:
Код:
$(document).ready(function(){
    $(window).scroll(function(scoll){
        if ($(window).scrollTop()){
            alert('Imame scroll');
        }
	});
	if(!scoll){
			alert('Ne otchitam scroll moje da refreshvame');
		}
});
погледни документацията на scroll()
 
Без успешно ...

Проблема е там, че ми рефрешва дива на 1 секунда и в тази една секунда аз не мога да скролна на горе камоли да мога да копирам нищо от текста, защото много бързо рефрешва и маркираното изчезва ...
 
Мда и други са се натъквали на този проблем,и има решение малко по-различно от предложеното от мен:
Click

Другия вариант,е да се прави проверка във друг файл който да сравнява последното съобщение (ид) със тези в дб-то и да поакзва ако те са > ид от него:
Click
тоест само новите съобщения,а не да рефрешва целия див.

Дано намериш цаката. :)
 
Ето как реших проблема:

[js] function updateChat(){
var oldscrollHeight = $("#middle").prop("scrollHeight") - 20;
$.ajax({
url: 'chat/view.php',
type:'POST',
cache: false,
dataType: 'json',
success: function(output_string){

$('#middle').html(output_string);

var newscrollHeight = $("#middle").prop("scrollHeight") - 20;



if(newscrollHeight > oldscrollHeight){

$("#middle").animate({ scrollTop: newscrollHeight }, 'normal');
}


}
});

}
setInterval (updateChat, 2500);[/js]
 

Back
Горе