jQuery не передает переменную после .click - PullRequest
0 голосов
/ 02 декабря 2010

Итак, у меня работает простой скрипт jQuery.Он имеет 2 кнопки, 1 для отправки данных и 1 кнопку для установки значения одной из переменных, отправляемых в первой.

Хорошо, так вот сценарий для кнопки 1 (называемый предварительным просмотром):

$('#execute').click(function() {
$('#currentImage').remove();

$.ajax({
   type: "POST",
   url: "effect.php",
   data: { action: $("[name='action']:checked").val(), source: sourceImage, destination: destinationImage, variables: $('#variables').val() },
   success: function(msg){
     $('#workspace').html(msg);
     $("#preview").attr("src", destinationImage+"?timestamp=" + new Date().getTime());
   }
 }); });

Это влияет на изображение, и все это работает замечательно.В одной из первых строк javascript содержится переменная «sourceImage».

var sourceImage = '20101201161609.jpg';

Эта переменная правильно передана в приведенный выше скрипт.Вторая кнопка (называемая «Сохранить состояние») гарантирует, что я доволен эффектом изображения, сохраняю состояние изображения и продолжаю использовать эффекты над этим изображением.Это означает, что исходное изображение необходимо изменить, для чего я использую следующий скрипт:

$('#save_state').click( function() {
var sourceImage = '2010-12-02-35-20-preview.png';
$('#header').html(sourceImage); });

Я оставил строку $('#header').html(sourceImage);, чтобы проверить, действительно ли она была запущена, и это так, поэтому эта строкане является обязательным, но я точно знаю, что действие запущено.

Однако, те, которые я снова нажимаю на «Предварительный просмотр», изменяют значение переменной sourceImage обратно на значение, с которого она началасьс, в то время как это фактически должно сохранить это новое значение.

Надеюсь, есть кто-то, кто может помочь мне.

Ответы [ 3 ]

4 голосов
/ 02 декабря 2010

Используя ключевое слово var, вы объявляете локальную переменную в функции, которая отделена от глобальной переменной с тем же именем.Удалите ключевое слово var для доступа к глобальной переменной:

$('#save_state').click( function() {
  sourceImage = '2010-12-02-35-20-preview.png';
  $('#header').html(sourceImage);
});
0 голосов
/ 02 декабря 2010

Здесь ...

$('#save_state').click( function() {
var sourceImage = '2010-12-02-35-20-preview.png';
$('#header').html(sourceImage); });

... вы абсолютно ничего не делаете, потому что вы устанавливаете локальную (как указано var) переменную sourceImage, которая гаснетсразу.Глобальная (оконная) переменная sourceImage остается нетронутой.

0 голосов
/ 02 декабря 2010

Переменная sourceImage во второй функции имеет локальную область видимости для функции и не относится к той же переменной.Я думаю, что вы можете заставить его работать так, как вы хотите, просто удалив ключевое слово var.Сказав это, вы должны быть очень осторожны, используя глобальные переменные.Обычно вы хотите охватить переменную как можно более узко.Возможно, вы захотите использовать функцию data для хранения этого значения в DOM, хотя это трудно понять, не понимая, что вы пытаетесь сделать.

...