Автор Тема: Предаване на глобална променлива във функция с jquery  (Прочетена 5285 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Здравейте,
Отдавна не бях писал тук, но сега ми се налага. Днеска се мъчих да предам нещо от функция в ajax функция, но не става.

Код:
<script>
$(document).ready(function() {
var pagez = 1;
 
$('.pagination').jqPagination({
link_string : '/?page={page_number}',
max_page : 5,
current_page: 1,

paged : function(page) {
}
});

$( ".next" ).click(function() {
var pagez = pagez + 1;
});

$.ajax({
url : 'get.php?page=' + pagez,
type : 'GET',
dataType : 'json',
success : function (data) {
$('.logz').html(data['info']);
}
})

});
</script>

Става дума за 'pagez' (вижте на колко места го има и какво се опитвам да направя)
Значи първо съм го дефинирал с 1 като глобална променлива, а после в click евент се опитвам да му добавям винаги + 1. Накрая искам да го предам в ajax функцията в url параметъра:
url : 'get.php?page=' + pagez,По принцип най-добре ще е да се случва тук:
paged : function(page) {
}
Защото 'page' е във функция, която също е вид клик детект, но и там да го сложа - пак не става.
Не е добра идея да вмъквам кода в page функцията, защото не се вижда отначало. Първо трябва да кликна на някои от бутоните за странициране и чак тогава го показва.

Въобще това е една библиотека за странициране, обаче нещо не става, дали аз се опитвам да направя невъзможното или просто бъркам някъде ?

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Не, че разбрах нещо ...

... но до колкото разбрах, ти е закучило кое как е видимо в един код, нали?
Код: Javascript
  1. <script>
  2. $(document).ready(function() {
  3. var pagez = 1; /* Ще е видимо навсякъде във функцията в ready конструкцията без фунциите вътре в нея и ще го кръстим: #haha*/
  4.  
  5. $('.pagination').jqPagination({
  6. link_string     : '/?page={page_number}',
  7. max_page        : 5,
  8. current_page: 1,
  9.  
  10. paged           : function(page) {
  11. }
  12. });
  13.  
  14. $( ".next" ).click(function() {
  15. var pagez = pagez + 1; /* Ще е видимо само в тази функция и ще го кръстим: #brej */
  16. });
  17.                
  18. $.ajax({
  19. url : 'get.php?page=' + pagez, /* това тук ще дойде от функцията в ready конструкцията или тъй нареченото #haha */
  20. type : 'GET',
  21. dataType : 'json',
  22. success : function (data) {
  23. $('.logz').html(data['info']);
  24. }
  25. })
  26.  
  27. });
  28. /* Извод: #brej не е #haha следователно не си запознат с тази материя ;) */
  29. </script>
Надявам се с лекцията си да съм бил полезен :)

... и ето разковничето:
Ако това
Код: Javascript
  1. $( ".next" ).click(function() {
  2. var pagez = pagez + 1;
  3. });
е направено така
Код: Javascript
  1. $( ".next" ).click(function() {
  2. pagez = pagez + 1;  /* pagez ++  "това е аналогично" */
  3. });
може и да сработи.
« Последна редакция: 13 Октомври 2014, 21:09:10 от HanKrum »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Не, опитах и така, опитах и с pagez++, но не и не и не иска и не иска.
Не знам какво да правя вече.
Помислих, че е запазена променлива за някоя от функциите и го промених на pagez1, но пак не става.

edit:
Пробвах и с window. да ги дефинирам, но пак не става.
« Последна редакция: 13 Октомври 2014, 21:35:19 от lqlqlq »

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
МАХНИ "var" на второто във функциятааааа !!!

Код: Javascript
  1.     <script>
  2.     $(document).ready(function() {
  3.     var pagez = 1;
  4.      
  5.     $('.pagination').jqPagination({
  6.     link_string     : '/?page={page_number}',
  7.     max_page        : 5,
  8.     current_page: 1,
  9.      
  10.     paged           : function(page) {
  11.     }
  12.     });
  13.      
  14.     $( ".next" ).click(function() {
  15.     var pagez = pagez + 1;
  16.     });
  17.                    
  18.     $.ajax({
  19.     url : 'get.php?page=' + pagez,
  20.     type : 'GET',
  21.     dataType : 'json',
  22.     success : function (data) {
  23.     $('.logz').html(data['info']);
  24.     }
  25.     })
  26.      
  27.     });
  28.     </script>
« Последна редакция: 13 Октомври 2014, 21:42:59 от HanKrum »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Ами махнах го, прочетох добре написаното от теб. Махнато е, но не става.
Между другото сега тествах с alert в 2-те функции:
Код: Javascript
  1. paged           : function(page) {
  2. pagez1 ++;
  3. alert($pagez1)
  4. }
  5. });
  6.  
  7. $( ".next" ).click(function() {
  8. pagez1 ++;
  9.         alert(pagez1);
  10. });

и всичко си работи, вади ги 1,2,3,4, но като сложа най-долу alert(pagez1) си вади само 1, имам чувството, че не иска да го вади динамично. Динамично се вади само в тези функции, а като искам да го предам си седи само на 1, само в тези 2 функции се сменя. В ajax евента си седи на 1.
« Последна редакция: 13 Октомври 2014, 22:30:06 от Avalanche »

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Не мога да разбера каква е идеята.
За какво е този AJAX?
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
За странициране.
Ето го

Аз имам няколко варианта с изкарване на данни с ajax, които работят, но искам да подкарам и този.
Поради това, че е със друг стил.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Пробвай така:
Код: Javascript
  1. $.ajax({
  2.     url : 'get.php',
  3.     type : 'GET',
  4.     dataType : 'json',
  5.     data: {
  6.         'page' : pagez
  7.     }
  8. }).done(function(data) {
  9.     $('.logz').html(data['info']);
  10. });
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Нещо много променливи станаха - pagez, pagez1... Ползвай console.log вместо alert, и след това гледай в конзолата на браузъра какво излиза - пъти по-удобно е. Тоя AJAX работи ли въобще, май само един път се извиква?
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Мисъл
Аз затова готови боклуци избягвам да ползвам, предпочитам сам да си напиша нещата.
Ще ми отнеме толкова време за да разбера основата му, колкото време за да си напиша нещо мое.
« Последна редакция: 13 Октомври 2014, 22:37:38 от HanKrum »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Re: Предаване на глобална променлива във функция с jquery
« Отговор #10 -: 13 Октомври 2014, 22:37:23 »
@Ava, имаше някакъв callback и ми изкарваше 1,2,3,4 в console лог-а на браузъра, оттам може ли някак си да се чете или пък да се взимат само числата, нещо като в php с (int) ? Тъй като е възможно и някакви други неща да има там някога - да не се бърка.


А ajax-a да, работи и изкарва само 1-вия запис и не иска да изкарва 2-рите, само когато го вкарам в:
paged      : function(page) {
//tuk
}
});

и url е такова:
url : 'get.php?page=' + page,но пък не иска да ми вади 1-вия запис, трябва първо да кликна и тогава ги почва. Иначе аз мога да го направя да работи точно, но с 2 ajax заявки, а не искам. Ще стане тромаво.

edit:
Хане, пак не става с твоя код :D

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 125
  • -Получени: 73
  • Публикации: 1005
  • Кибик
Re: Предаване на глобална променлива във функция с jquery
« Отговор #11 -: 13 Октомври 2014, 22:44:30 »
Защо при зареждане се праща ajax, като информацията може да дойде още при основната заявка, би трябвало ajax-а да се ползва при някакъв евънт, например click
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Re: Предаване на глобална променлива във функция с jquery
« Отговор #12 -: 13 Октомври 2014, 22:47:38 »
Е да, ама аз го ползвам за изкарване на новини.

Примерно целта е да седи 1-ва новина (някаква) и после след клик на стрелкичките (next<>previous) да ми изкарва другите.
А тази функция:
paged : function(page) { детектва именно кликовете, а page е следващата страница, която ще се кликне.
Когато го поставя там ajax-a работи отлично, но не вади първия резултат, той излиза едва когато се кликне next.
Не искам това да е така, искам да има 1 новина и после като си кликам да ми изкарва другите.

Между другото не смятам, че целта му е точно за подобно странициране на този 'плъгин', но е добре стилизиран.
От гледна точка на SEO също не е добра идея, защото няма никакво съдържание в страниците - вади се динамично, но аз ще го ползвам на специфична страница. Целия сайт не е изграден на ajax основа, така, че SEO-то няма да е толкова 'засегнато' от тази 'екстра'.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Предаване на глобална променлива във функция с jquery
« Отговор #13 -: 13 Октомври 2014, 22:55:44 »
2014-а сме, AJAX не е непостижима цел за роботите, тука изписахме една темичка затова преди време. Проверките дали е число си ги прави в PHP-то, имаше май някакви неща за sanitize на JSON преди да го пратиш, трябва да гугълнеш. Нещо цялата история не я правиш като хората...

Edit:
Дебъгни стъпка, по стъка и виж къде бяга коньо у ряката.
« Последна редакция: 13 Октомври 2014, 23:01:01 от Avalanche »
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Предаване на глобална променлива във функция с jquery
« Отговор #14 -: 14 Октомври 2014, 01:24:46 »
Отворих страницата с плъгина - http://beneverard.github.io/jqPagination/ , след това отворих firebird under firefox и копирах / пейстнах кода от функцията която ползва този плъгин в run the enter command таба и получих нов рикуест след всеки клик:

Код: Javascript
  1.  
  2. $('.pagination').jqPagination({
  3.         link_string     : '/?page={page_number}',
  4.         max_page        : 40,
  5.         paged           : function(page) {
  6.         $.ajax({
  7. url: "test.html?page="+page,
  8. context: document.body
  9. }).done(function() {
  10. $( this ).addClass( "done" );
  11. });
  12.         }
  13. });
  14.  
  15.  
« Последна редакция: 14 Октомври 2014, 01:28:16 от theCanadian »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html