JavaScript и функциональные переменные - PullRequest
1 голос
/ 19 сентября 2011

Допустим, у меня есть это в HTML-форме ...

<input id="world" type="text" onblur="return hello ('world');" />

И в моем сценарии у меня есть

function hello (id) {
      document.write(id);
}

Возвращает мир, как и ожидалось. Если я использую это так, хотя ...

function hello (id) {
      var val = $('#' + id).val();
      $.post("ajax.php", {
          id: val,
      });
}

Затем идентификатор возвращает Массив , как я могу заставить его вернуть имя пользователя так, как я хочу.

Спасибо.

По просьбе php стороны вещей ...

if (isset($_REQUEST['username'])) {
    $q = $dbc -> prepare("SELECT username FROM accounts WHERE username = ?");
    $q -> execute(array($_REQUEST['username']));

    if (strlen($_REQUEST['username']) < 3) {
        echo '<div class="error">Has to be at least 3 characters</div>';
    }   
    elseif ($q -> rowCount() > 0) {
        echo '<div class="error">Username already taken</div>';
    }
    else {
         echo '<div class="success">Username available</div>';
    }
}
else {
    echo $_REQUEST;
}

Если он должен равняться имени пользователя, как это должно быть, тогда ajax будет успешным, иначе он будет отображать результат $_REQUEST, который на данный момент Array .

UPDATE

Вызов функции:

<input id="world" type="text" onblur="return ajax ('username');" />

Оригинальная функция:

function ajax (id) {

var val = $('#' + id).val();

$('.loading').fadeIn().delay(100);

$.post("ajax.php", {id: val};

}

Я сделал дамп var в массиве, и он возвращает строку, которая была введена в текстовое поле ?? Не идентификатор, который я передал функции?!? Почему это происходит?

Пример var_dump($_REQUEST)

array
 'id' => string 'dadadas' (length=7)

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Ваш PHP-код проверяется на username:

if (isset($_REQUEST['username'])) {

Измените код, указав username вместо id

function hello (id) {
    var val = $('#' + id).val();
    $.post("ajax.php", {
        username: val
    });
}

$_REQUEST - это массив, который вы echo используете, потому что параметр запроса username не найден.

0 голосов
/ 19 сентября 2011

Возможно, у вас есть более одного элемента на странице с одинаковым значением "id". Это недопустимая разметка, поскольку значения «id» должны быть уникальными на всей странице.

изменить & mdash; Повторное использование значений id действительно плохая идея, но это не приведет к такому поведению. Я подозреваю, что может быть другой код, который объяснил бы больше. Я оставлю этот ответ здесь, но никто не должен голосовать за него: -)

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