Применить функцию jquery к контенту, загруженному через Ajax - PullRequest
0 голосов
/ 22 мая 2011

Я загружаю панель (html) через Jquery (ajax), в панели есть форма входа в систему с флажком.Я хочу установить имя пользователя в файле cookie, как только пользователь установит флажок (запомните меня).Это не работает.Есть ли решение?

$('#cookie').bind('change', function() {
       $.cookie("log_user", $("#log_user").val(), {expires: 14});
       $.cookie("log_pass", $("#log_pass").val(), {expires: 14});
});

  $("#gate").click(function () {
    var panel = $("#panel");
    if (!panel.data("loaded")) {
        $("#panel").load("/v3/ajax/panel.php");
        panel.data("loaded", true);

        var log_user = $.cookie('log_user');
        var log_pass = $.cookie('log_pass');
        // autofill the fields
        $('#log_user').attr("value", log_user);
        $('#log_pass').attr("value", log_pass);

    }
    panel.slideToggle("slow");
});




<form action="/members/login.php" method="post">
<label for="log_user">Username</label><input id="log_user" type="text" name="user" value="" maxlength="50"  /><br />
<label for="log_pass">Password  </label><input id="log_pass" type="password" name="pass" value=""  maxlength="50"  /><br />
<input id="cookie" type="checkbox" name="cookie" value="do" style="border: 0px;" /><label for="cookie"><small>Remember me</small></label><br />

<a title="Join Sionvalais" href="/members/register.php">register</a><br />
<input type="submit" name="submit" value="Login"  />
</form>

1 Ответ

0 голосов
/ 22 мая 2011

Я полагаю, что это потому, что вы используете событие change (), а не live () - поскольку, если #cookie вызывается на страницу только после вашего Ajax-события, она не существует в начальное время рендеринга и не можетпривязать событие изменения - оформить заказ live () в jquery API

http://api.jquery.com/live/

ОБНОВЛЕНИЕ

После ваших комментариев я собралследующий макет в JSFiddle, который, кажется, работает.

http://jsfiddle.net/beardtwizzle/52JQX/2/

Единственная ошибка, которую я получил во время моих тестов, была связана с $ .cookie - для которого вам нужно включить плагин (http://plugins.jquery.com/files/jquery.cookie.js.txt)

ОБНОВЛЕНИЕ 2

Проблема определенно связана с настройкой cookie - попробуйте ввести вместо кода cookie alert('hello world');, и вы должны увидеть, чтоэто происходит - это предполагает, что вы используете live ('change', function () ... вместо bind.

НО, это не ваша реальная проблема - ваша реальная проблема в том, что этот метод 'запоминания'Я »НЕ УКАЗАН на стольких уровнях.

  1. Вы пытаетесьПринятие решения о сохранении пароля для плохого посетителя в виде обычного текста - ПЛОХО
  2. Когда вы видите файл cookie на компьютере пользователя, вы просто записываете все, что там есть, к значению в ваших полях.Делая это, вы предполагаете, что пользователь имеет подлинный файл cookie с вашего сайта - и вместо этого он не внедрил часть своего вредоносного кода, см. (http://en.wikipedia.org/wiki/Cross-site_scripting)

МОЙ ОТВЕТ в светевыше

Я бы посоветовал отказаться от этого кода ПОЛНОСТЬЮ, затем уйти и почитать о веб-безопасности, а затем переадресовать его. Если вы продолжите и добьетесь успеха, вы навредитеневинных пользователей (и наносит серьезный ущерб вашей репутации).

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