Как я могу передать переменную функции в jquery? - PullRequest
0 голосов
/ 19 сентября 2011

Это моя HTML-форма, которую я использую.

<label>Your Username:</label><input id="username" name="username" type="text" onchange="return ajax ('username');" />

Это мой файл проверки ajax в php.

if ($_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>';
}
}

И мой запрос jquery ajax ...

function ajax (input) {

var val = $('#'+input).val();
$('.loading').fadeIn().delay(100);
$.post("ajax.php", {
    username: val,
}, 
function (response) {
    $('.error, .success').hide();
    setTimeout(function(){
        $('.loading').hide();
            finishAjax(input, response);
    }, 1000);
});
return false;
}

function finishAjax(id, response) {

$('#'+id).after(response).fadeIn(2000);
}

В моей форме я вызываю запрос ajax с переменной username.

В моем ajax.php правильная проверка имени пользователя происходит, если в запросе указано имя пользователя.

Я хотел бы отобразить ввод переменной вместо username в коде jquery, чтобы я мог использовать этот сценарий для других проверок и передать переменную в качестве электронной почты или пароля, и сценарий будетпо-прежнему работает, так как значение ввода будет тем, чем оно должно быть.

Если это имеет смысл.

Спасибо за ваше время.

Ответы [ 4 ]

2 голосов
/ 19 сентября 2011
var data = {};
data[input] = $('#' + input).val();

$.post("ajax.php", data, function() {...

и

finishAjax(input, response);
0 голосов
/ 19 сентября 2011

Прежде чем вызывать $ .post создайте пустой объект.

var data = {};

Используйте параметр функции в качестве индекса для объекта.

data[input] = val;

При вызове $ .post используйте этот объект вместо литерала анонимного объекта.

$.post("ajax.php", data, function ...);

Если вы делаете все так, как вы описываете, вам нужно убедиться, что вы правильно управляете всеми этими параметрами. Вы уверены, что ваш PHP-скрипт способен обрабатывать все возможные значения, которые вы можете передать в функцию ajax ?

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

проверить ввод arg wat ll you get, а затем продолжить ..... удалить точку с запятой рядом с

 {username: $('#' + input).val(),}

as ,{ username: $('#' + input).val()},

вы получите o / p

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

Вы объявляете val значением «input», но никогда не используете его.Все пользователи имени пользователя должны иметь доступ к этой переменной val, поэтому используйте ее.Если я не понимаю ваш вопрос, что-то вроде этого (только одна строка изменилась):

function ajax(input) {
    var val = $('#' + input).val();
    $('.loading').fadeIn().delay(100);
    $.post("ajax.php", {
        username: val,
    }, function (response) {
        $('.error, .success').hide();
        setTimeout(function () {
            $('.loading').hide();
            finishAjax('username', response);
        }, 1000);
    });
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...