我正在遵循MVC结构,并且在打开正在加载数据且用户具有搜索功能的搜索页面时遇到了问题。
问题是用户必须按下提交按钮,以便搜索网站上的视图层可以将表单的输入名称值发送到控制器。然后,Controller将这些名称值绑定到变量,并将它们与模型对象连接起来。
以下是一些代码:
查看层:
<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();
当页面加载时,我收到错误&#34; 未定义索引:名称&#34; &#34; 未定义索引:名称&#34;
这是因为表单尚未发送到控制器,因此没有任何内容可以绑定Controller层中的变量。当用户点击提交时,一切都运行正常,因为表单输入名称 - 值($_POST['Personnummer_search']
)被发送到控制器并可以将其绑定到变量。
无论如何都要将表单发送到控制器而不必按提交按钮? 我已经尝试过Onload点击功能,但在发送表单之前有一段延迟,这意味着错误会在正常工作之前发生一段时间
答案 0 :(得分: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);