2015-06-13 4 views
1

ajax/javascript problem: У меня есть приложение, состоящее из нескольких форм. То, что я хочу достичь, состоит в том, чтобы создать общую функцию js для отправки форм своим соответствующим контроллерам, получив идентификатор формы. Я успешно получаю идентификаторы формы в переменной form_id, но не могу их использовать. Я попытался заменить $ («patient_form») с формой _id и получил следующее сообщение об ошибке: TypeError: form_id.on не является функциейgeneric ajax form submission

Вот следующий код для лучшего понимания проблемы:

$(function() { 
    var form = document.getElementsByTagName("form"); 
    var form_id = "'#" + form[0].id + "'"; 

    form_id.on('submit', function (e) { 

     e.preventDefault(); 

     $.ajax({ 
      type: 'post', 
      url: 'Controllers/c_insertPatient.php', 
      data: $('#patient_form').serialize(), 
      success: function (result) { 
       alert(result); 
      } 
     }); 

    }); 

}); 

ответ

0

В дополнение к другим ответам вы хотите сохранить свой идентификатор формы динамическим, правильно, чтобы вы могли вставлять любые значения, которые вы хотите.

$(function() { 
    var form = document.getElementsByTagName("form"); 
    // note you have to convert to jQuery object 
    var form_id = $("#" + form[i].id); // i, so you can put in the id for any form 

    form_id.on('submit', function (e) { 

     e.preventDefault(); 

     $.ajax({ 
      type: 'post', 
      url: 'Controllers/c_insertPatient.php', 
      data: $(this).serialize(), // again, keep generic so this applies to any form 
      success: function (result) { 
       alert(result); 
      } 
     }); 

     }); 

}); 
+0

no not id формы, приложение php имеет несколько форм со своими соответствующими идентификаторами, и я просто хотел сохранить типизирующий избыточный код для каждой формы. Кроме того, вышеприведенное решение работало для меня. Большое спасибо –

1

путь у вас есть form_id - это строка.

Try: var form_id = $("#" + form[0].id);

1

$.ajax функция JQuery. Если вы хотите использовать JQuery (который в данном случае, я думаю, вы должны), то сделать это следующим образом:

$('form').on('submit', function() { 
    $(this).preventDefaults(); 

    $.ajax({ 
     type: 'post', 
     url: 'Controllers/c_insertPatient.php', 
     data: $('#patient_form').serialize(), 
     success: function (result) { 
      alert(result); 
     } 
    }); 
}); 
0

Вы должны установить слушатель событий для элемента, а не строки из идентификатора элемента. Также я предполагаю, что у вас есть jQuery, потому что вы используете $. Установите идентификатор в форме в HTML. Затем:

$(function() { 
    var form = $('#theFormId'); 

    form.submit(function(event) { 

     $.post('Controllers/c_insertPatient.php', form.serialize(), function() { 
      alert('success'); 
     });   


     event.preventDefault(); 
    }); 
});