Передача данных на сервер при удаленной проверке

#jquery #jquery-validate

#jquery ( jquery ) #jquery-проверка

Вопрос:

Использование проверки jquery с помощью remote для одного из полей. Как мне отправить на сервер данные о том, что пользователь ввел в это поле?

 rules: { 
      "profile.userId": {
       required: true,
       minlength: 8,
       remote: {
                url: "/checkUniqueUserId",
                dataType: "json",
                type: "POST",
                data: {userId : '???'}
       }
 }
 

Как мне извлечь введенное значение из поля ввода? Я уже пробовал:

  • $("#userId").val()
  • userId
  • profile.userId
  • $(this).val()

Есть какие-нибудь предложения?

Это есть в моем jsp:

 <div class="control-group">
   <div class="form-group has-success has-feedback">
      <form:input type="text" id="userId" name="userId" class="form-control" 
      path="profile.userId" placeholder="user name"/>
   </div>
</div>
 

Комментарии:

1. Можете ли вы показать HTML-код, в котором присутствует идентификатор?

2. Вам нужно опубликовать больше вашего кода.

3. Вам не нужно ничего делать. Значение поля уже автоматически отправляется с remote правилом.

4. Вместо того, чтобы показывать необработанный jsp, пожалуйста, показывайте только отображаемый HTML-код, который отображается в исходном коде браузера.

Ответ №1:

Цитата OP:

«Как мне отправить на сервер данные о том, что пользователь ввел в поле?»

Вы этого не делаете, потому что это уже отправлено по умолчанию.

Ваш код…

 rules: { 
    "profile.userId": {  // <- this MUST be the 'name' attribute of the input
        required: true,
        minlength: 8,
        remote: {
            url: "/checkUniqueUserId",
            // dataType: "json",      // <- not needed, default
            type: "POST",
            // data: {userId : '???'} // <- not needed
        }
    }
}
 

Если вам просто нужно значение вашего profile.userId поля, вам не нужно ничего делать. Это точные данные, уже отправленные по умолчанию.

Используя PHP в качестве примера, к нему просто обращаются на стороне сервера с $_POST помощью массива as $_POST['profile.userId'] . (Это предполагает, что отображаемый <input> элемент содержит name="profile.userId" атрибут, в противном случае ничего из этого не будет работать.)

Вы будете использовать эту data опцию только в том случае, если вам нужно отправить дополнительные данные в удаленный скрипт. Например, чтобы отправить адрес электронной почты вместе с идентификатором пользователя.

Дополнительную информацию и примеры см. в документации.

Комментарии:

1. да, это происходит по умолчанию, мне просто нужно было изменить параметр на моем сервере, чтобы он соответствовал. Работает! Спасибо.

Ответ №2:

В примере somecase: edit email user вы можете использовать данные:{}

 rules: {

            txt_email: {
                required: true,
                email: true,
                remote: {
                    url  : "emailcheck.php",
                    type : "POST",
                    data: {type:'edit',old_email:$( "#old_email" ).val()}
                }
            }
 

}

в emailcheck.php ручка

 if($_POST['type'] == "edit") {
    // your business code
}
 

Комментарии:

1. Удивительно, большое вам спасибо, ваш ответ почти спас мой день 🙂