2015-01-09 2 views
0

Я следую структуре MVC, и у меня возникла проблема при открытии страницы поиска, где данные загружаются, и пользователь имеет возможность поиска.Отправить автоматически без задержки?

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

Вот некоторые из кода:

Посмотреть слой:

 <form id="submitForm" name="submitFrom" method="POST" action onload="SearchController.php"> 
     <p> 
      Personnummer:<br /> <input type="text" name="Personnummer_search" id="Personnummer_search" /><br /> 

      Namn:<br /> <input type="text" name="name" id="name" /><br /> 

      <input type="submit" name="button" id="btn_search" value="Sök"/> 

<table class="table table-hover"> 
     <tr class="danger"> 
      <td>Personnummer</td> 
      <td>Namn</td> 
</tr> 
for ($i = 0; $i < count($Results); $i++) { 
      echo " 
      <tr> 
      <td>{$Results[$i]['Personnummer']}</td> 
      <td>{$Results[$i]['Namn']}</td> 
</tr> 

Мой контроллер слой

include 'c:/wamp/www/mvc/model/Sok.php'; 

     $name = $_POST['name']; 
     $Personnummer =$_POST['Personnummer_search']; 
$displayResults = new Sok($name, $Personnummer'); 
$Results = $displayResults->getSearchResult(); 

При загрузке страницы я получаю ошибку "Undefined индекс: имя" "Неопределенный индекс: имя" Это потому, что форма не была сена t к контроллеру, поэтому нет ничего, чтобы связать переменные на уровне контроллера. Когда пользователь нажимает кнопку «Отправить», все работает отлично, потому что тогда входные значения имени формы ($_POST['Personnummer_search']) отправляются контроллеру и могут привязывать его к переменным.

Можно ли отправить форму на контроллер, не нажимая кнопку отправки? Я пробовал функцию щелчка OnLoad, но есть задержка перед отправкой формы, то есть ошибка возникает на некоторое время, прежде чем он работает нормально

ответ

1

что вы можете сделать, если вы используете JQuery это:

$("#submitForm").find("input").bind("change", function(){ 

    // ajax function 

}); 

или с простым javascript

window.addEventListener("load",function(){ 
    var inputs =document.getElementById("submitForm").getElementsByTagName("input"); 
    for (var i = 0; i < inputs.length; ++i) { 
     inputs[i].addEventListener("change",function(){ 
      console.log("ajax method here"); 
     }, false); 
    } 
},false); 
Смежные вопросы