Запуск функций jQuery с помощью PHP - PullRequest
0 голосов
/ 28 октября 2009

Пока во время разработки моего сайта я сохранял все свои функции jQuery во внешнем файле .js, ниже приведены два примера функций внутри:

// Loads the login form into the page.
function loadLoginForm() {
  $('[name=loadLoginForm]').click(function() {
    $("#loadingImage").css({ display:"block" });
    $("#mainWrap").load("modules/web/loginForm.php", null, function(data) {
      loadRegisterForm(this, data);
      validateLoginDetails(this, data);
      characterSelect(this, data);
    });
  });
}

// Loads the register form into the page.
function loadRegisterForm() {
  $('[name=loadRegisterForm]').click(function() {
    $("#loadingImage").css({ display:"block" });
    $("#mainWrap").load("modules/web/registerForm.php", null, function(data) {
      loadLoginForm(this, data);    
      registerUser(this, data);
    });
  });
}

Способ, которым я запускал эти функциидолжен был отобразить ссылку на страницу, используя PHP, такой как этот;

Click <a href="#" name="loadLoginForm"><i>here</i></a> to login.

Проблема, с которой я сейчас сталкиваюсь, заключается в том, как разрешить стороне кода PHP инициировать событие вместо того, чтобы дать пользователюссылка для его запуска?

Единственный ответ, который я придумал, - заставить PHP отобразить некоторый JavaScript, чтобы при загрузке страницы JavaScript вызывал необходимую функцию, но я не знаю, как это кодировать..

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

Ответы [ 2 ]

3 голосов
/ 28 октября 2009

Я думаю, что лучше иметь целую кучу функций Javascript, как вы, похоже, делаете. Никакой (или небольшой) код не должен выполняться в этом общем внешнем файле JS. Затем в ваши HTML-страницы добавьте динамический Javascript:

<script type="text/javascript">
$(function() {
  loadLoginForm();
  loadRegisterForm();
});
</script>

В качестве альтернативы вы можете поместить код ready () в функции. Таким образом, на странице выполняется только минимальный и необходимый код.

Поверьте мне, я сделал это по-другому (где весь код выполняется на каждой странице), и время загрузки страницы очень быстро становится тупо высоким.

Редактировать: Если вы просто хотите вызвать событие, скажем, у вас есть:

<a href="#" id="delete">Delete</a>

вам просто нужно:

$(function() {
  $("#delete").click();
});

(при условии, что обработчик кликов был назначен). click () без аргументов вызывает событие click.

Вы также можете эффективно установить «это» в Javascript, вызываемом вручную. Представьте, что у вас есть:

$("#delete").click(delete_stuff);

function delete_stuff() {
  alert($(this).attr("href"));
  return false;
});

Вы можете позвонить в другое место с помощью:

delete_stuff.call($("#delete")[0]);

Это явно устанавливает "это". См. вызов JavaScript и примените .

Это помогает?

0 голосов
/ 29 октября 2009

Проблема, с которой я сейчас сталкиваюсь, заключается в том, как Я позволил стороне кода PHP вызвать событие вместо того, чтобы дать пользователю ссылка для его запуска?

Возможно, использовать событие загрузки ? Когда на странице появляются «[name = loadRegisterForm]» или «[name = loadLoginForm]», они должны выполнить код в обратном вызове. Я не проверял это и не уверен, было ли это то, о чем вы просили, но я верю, что так работает событие ...

А вы не думали сделать это иначе? Вам следует избегать использования javascript, если в любом случае php при загрузке страницы может создать правильный HTML-файл - в конце концов, для этого он и нужен. Обычно я не из тех парней, которые предлагают, чтобы сайт всегда работал без javascript, но это должно быть вполне возможно, и это хорошая практика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...