JS: Изменение переменной не будет применяться на следующем - PullRequest
0 голосов
/ 18 января 2011

У меня есть это:

$('#albumPhotoNext').live('click', function () {
var currentDate = '<?php echo $grab["date"]; ?>';
    $.ajax({
    url: "photo.php",
    type: "post",
    data: { currentDate : currentDate },
    success: function(r){
    currentDate = r.date;
    }
    });
});

Я хочу установить currentDate для r.date, в случае успеха, поэтому в следующий раз, когда вы нажмете #albumPhotoNext, currentDate будет r.date.

Прямо сейчас он дает мне $ grab ["date"]; когда я нажимаю, независимо от того, установил ли я currentDate на r.date или нет.

Я хочу иметь только $ grab ["date"]; по умолчанию, если он не был установлен в r.date

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 18 января 2011

currentDate является локальной переменной, поэтому ее значение сбрасывается при каждом вызове.

Вам нужно будет сделать переменную существующей во внешней области видимости, чтобы ваши изменения сохранялись.

Простой способ сделать это:

$(function() {
   var currentDate = '<?php echo $grab["date"]; ?>';
   $('#albumPhotoNext').live('click', function () {
      $.ajax({
         url: "photo.php",
         type: "post",
         data: { 'currentDate' : currentDate },
         success: function(r){
            currentDate = r.date;
         }
      });
   });
});
0 голосов
/ 18 января 2011

Я бы подошел к этому немного по-другому. Вместо присвоения «currentDate» переменной, просто используйте другой селектор jQuery для установки текущей даты на самой странице.

$.('#albumPhotoNext').live('click', function () {
    $.ajax({
    url: "photo.php",
    type: "post",
    data: { currentDate : currentDate },
    success: function(r){
        $.('#dateOnPage').html(r.date);
    }
    });
});
0 голосов
/ 18 января 2011

Вы должны определить currentDate в области, доступной из области, которую вы хотите использовать.В настоящее время currentDate является локальным для обработчика событий, поэтому только код в обработчике событий может видеть значение, и он получает переназначенный на $grab["date"] каждый раз, когда вызывается обработчик.
Определите егов некоторой области выше, например, в обработчике готовности документа:

$(function() {  
    var currentDate = '<?php echo $grab["date"]; ?>';

    $('#albumPhotoNext').live('click', function () {       
        $.ajax({
        url: "photo.php",
        type: "post",
        data: { currentDate : currentDate },
        success: function(r){
        currentDate = r.date;
        }
        });
    });   
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...