#javascript #jquery #ajax #codeigniter
#javascript #jquery #ajax #codeigniter
Вопрос:
Я немного смущен этим кодом. Я читаю этот код ajax, который автоматически вставляет данные. но что меня смущает, так это эта строка, if(result=='12') then trigger ajax
что означает 12, почему это должно быть 12, а затем обусловлено до ajax. По-видимому, я все еще изучаю ajax, спасибо. P.S это работает хорошо, кстати, я просто запутался в коде
вот полный код функции создания javascript / ajax
$('#btnSave').click(function(){
var url = $('#myForm').attr('action');
var data = $('#myForm').serialize();
//validate form
var empoyeeName = $('input[name=txtEmployeeName]');
var address = $('textarea[name=txtAddress]');
var result = '';
if(empoyeeName.val()==''){
empoyeeName.parent().parent().addClass('has-error');
}else{
empoyeeName.parent().parent().removeClass('has-error');
result ='1'; //ALSO THIS NUMBER 1 WHY SHOULD IT BE 1?
}
if(address.val()==''){
address.parent().parent().addClass('has-error');
}else{
address.parent().parent().removeClass('has-error');
result ='2'; //ALSO THIS NUMBER 2 WHY SHOULD IT BE 2?
}
if(result=='12'){ //HERE IS WHAT IM CONFUSED
$.ajax({
type: 'ajax',
method: 'post',
url: url,
data: data,
async: false,
dataType: 'json',
success: function(response){
if(response.success){
$('#myModal').modal('hide');
$('#myForm')[0].reset();
if(response.type=='add'){
var type = 'added'
}else if(response.type=='update'){
var type ="updated"
}
$('.alert-success').html('Employee ' type ' successfully').fadeIn().delay(4000).fadeOut('slow');
showAllEmployee();
}else{
alert('Error');
}
},
error: function(){
alert('Could not add data');
}
});
}
});
Комментарии:
1. Это часть пользовательской проверки для этой формы. Это магические числа вызова, и их следует избегать.
2. Код, который вы читаете, создает строку
"12"
только тогда, когда оба входных параметра,employeeName
иaddress
, не являются пустыми. Итак, когда результат будет равен"12"
, будет безопасно выполнить вызов ajax. Действительно, странный способ проверки безопасности.3. @Shidersz итак, что ты думаешь? следует ли этого избегать?
4. @abn почему этого следует избегать?
5. @Shidersz, я не совсем понимаю, поэтому можно использовать любое случайное число? так может ли это быть 20 вместо 12?
Ответ №1:
Как я уже объяснял в своих комментариях, и поскольку вы хотели привести пример. Вот как я буду действовать, чтобы избежать проверки на result == '12'
:
$('#btnSave').click(function()
{
var url = $('#myForm').attr('action');
var data = $('#myForm').serialize();
// Validate form
var empoyeeName = $('input[name=txtEmployeeName]');
var address = $('textarea[name=txtAddress]');
var formValid = true;
if (empoyeeName.val() == '')
{
empoyeeName.parent().parent().addClass('has-error');
formValid = false;
}
else
{
empoyeeName.parent().parent().removeClass('has-error');
}
if (address.val() == '')
{
address.parent().parent().addClass('has-error');
formValid = false;
}
else
{
address.parent().parent().removeClass('has-error');
}
// If form is not valid, return here.
if (!formValid)
return;
// Otherwise, do the ajax call...
$.ajax({
type: 'ajax',
method: 'post',
url: url,
data: data,
async: false,
dataType: 'json',
success: function(response)
{
if (response.success)
{
$('#myModal').modal('hide');
$('#myForm')[0].reset();
var type = '';
if (response.type=='add')
type = 'added';
else if (response.type=='update')
type ="updated";
$('.alert-success').html('Employee ' type 'successfully')
.fadeIn().delay(4000).fadeOut('slow');
showAllEmployee();
}
else
{
alert('Error');
}
},
error: function()
{
alert('Could not add data');
}
});
});
Ответ №2:
Это просто проверка наличия значений и добавление к ним строки.
if(empoyeeName.val()=='')
Это проверяет пустое имя и добавляет ошибку, если имя пустое. иначе это приведет 1
к результату.
if(address.val()=='')
Это проверяет пустой адрес и добавляет ошибку, если адрес пуст. иначе это приведет 2
к результату.
Итак, если оба они непустые, это означает, что результат будет 12
и только вы вызываете ajax, иначе отображается ошибка.
Комментарии:
1.так это может быть случайное число? как
10
19
и т.д.?2. @SummerWinter да, основываясь на предпочтениях, вы можете определить его по своему желанию.
3. как насчет этого?
result ='1';
какова цель приращения add 1?4. @SummerWinter это не увеличение, это просто добавление строки
1
, а не числа1
5. здравствуйте, сэр, есть ли какой-либо способ или альтернативный способ удаления строки
result ='1';
или я имею в виду проверку формы без перехода туда?