根据ajax搜索答案自动填写表单并提交
Auto filling a form and submitting based on a ajax search answer
这个问题已经让我沮丧了几天,由于我在这里为我的项目中的其他问题找到了一些帮助,似乎有人可以提供我忽略的见解。
我承认我对sql、javascript、jquery、ajax、css和php非常陌生。我在大学里学了3年计算机科学(15年前)。虽然编码和逻辑没有太大变化,但它的语法和握手,以及计算发生在哪里,我要么忘记了,要么忽略了,要么一无所知。
我已经完成了一个基于ajax的搜索提交。此搜索在标记为.Admin的div中显示目标php这个效果很好。
它的答案是显示一棵树以及搜索节点上方和下方的节点。
我想让树中的每个节点都成为一个可点击的链接,指向它自己节点的搜索结果。
在php结果中,我将其编码为在对javascript函数的html调用中编写,它为每个函数生成一个唯一的id,以及它自己的函数调用。(不管这是否是个好主意,这就是我所尝试的)我认为,让javascript使用它知道的信息填写带有创建链接的表单并重新提交是很容易的,因为再次搜索不需要刷新。我试着让php编写这个脚本,以便它与页面一起开发,我也试着编写脚本并将其包含在父页面中,以便它已经加载。。。我不确定它应该放在哪里,也不知道它应该怎么写。
我可能错过了一个不可或缺的部分,或者我试图对代码做比我应该做的更多的事情,或者没有完全掌握操作发生的地方,需要完全重新思考。
我会尽量包括所有相关的代码,如果还不够,我会很高兴地补充。提前谢谢。
CallSearch.js
$(document).ready(function() {
$('#Search').submit(function(event) {
$.ajax({
type : 'POST',
url : 'MenuSearch.php',
data : $( this ).serialize()
})
.done(function(results) {
$(".Admin").html(results);
});
event.preventDefault();
});
});
Menu.php(我的搜索表单所在的位置)
<script src="/JS/CallSearch.js"></script>
...
<li><a>Search</a> <input type= "text" name="Search" id="search_name" class="search-group">
<ul>
<li><input type="radio" name="Table" id="TableRegion" value="R" class="search-group" checked><label for="TableRegion">Region</label></li>
<li><input type="radio" name="Table" id="TableGrape" value="G" class="search-group"><label for="TableGrape">Grape</label></li>
<li><input type="radio" name="Table" id="TableWine" value="W" class="search-group"><label for="TableWine">Wine</label></li>
<li><button type="submit" id="SubmitSearch">Submit</button></li>
</ul>
</li>
</form>
...
菜单搜索.php
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'Webpage');
define('DB_PASSWORD', 'Guest');
define('DB_DATABASE', 'database');
$db = mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE);
...
$sqlp ="SELECT * FROM region a JOIN Regionclosure b ON a.idregion=b.parent WHERE b.child= $idReg ORDER BY b.Depth DESC;";
...
$resultp = mysqli_query($db, $sqlp);
$string ="";
while($row = mysqli_fetch_assoc($resultp)){
$Reg = $row["RegName"];
$Parent= $row["Parent"];
echo $string . "|___";
if($_SESSION["Level"] == 'A' or $_SESSION["Level"] == 'C')
echo $Parent . " - ";
echo "<a href='#' id='$Reg'>" . $Reg . "</a><br>";
echo "
<Script>
$('#$Reg').click(function(){ searchforReg('$Reg'); return false; });
</script>";
$string .= " ";
};
我尝试过多次迭代"searchforReg('$Reg')"函数;但都没有用……我觉得它应该是这样的:
function "searchforReg(Region){
SearchData= "Table=R&Search="+$(Region).val;
(function() {
$.ajax({
type : 'POST',
url : 'MenuSearch.php',
data : SearchData
})
.done(function(results) {
$(".Admin").html(results);
});
event.preventDefault();
});
});
然而,这导致激活"操作"搜索无法将答案发送到并打开php(没有CSS…喘息…这不太好)。我觉得一个简单的javascript应该能够处理它,但我尝试了我能想到的所有不同方法(或查找),使其工作,但都无济于事。
我意识到我在玩"深水区",我在我的"水翼",所以如果你能宽恕我,把我推向边缘,我会很感激的。
首先,为每个链接打印点击处理程序的过程过于繁琐。相反,只需给每个链接一个类,并为该类的任何链接设置一个单独的处理程序。在menusearch.php中:
echo "<a href='#' id='$Reg' class='reg_link'> $Reg </a><br>";
$string .= " ";
附带说明-在PHP中,如果使用"双"引号进行回声,变量将被呈现,因此不需要连接。这就是为什么$Reg只是闲逛。如果使用"single"引号进行回显,则字符串将按字面意思进行解释。
然后在menu.php中,我们有一些javascript:
<script>
/* This is a non-standard listener, bound to the body so that any
dynamically added elements pulled in via ajax, but not in the original document can still be found.
Also, this can be shortened to a single line, but I split it up for clarity.
The single-line version is commented out. */
$(document.body).on('click', '.reg_link', function(){
//searchforReg($(this).attr('id'));
var id = $(this).attr('id'); //get the id of clicked element
searchforReg(id); //trigger function
});
function searchforReg(Region){
var SearchData= "Table=R&Search="+Region;
//If you're not familiar with console.log, it's a huge help in debugging
//console.log('searchData = ', SearchData);
$.ajax({
type : 'POST',
url : 'MenuSearch.php',
data : SearchData
})
.done(function(results) {
$(".Admin").html(results);
});
}
</script>
最后,我猜您在MenuSearch.php中对该数据有一些$_POST处理,但我看不到上面的内容,所以我认为它是有效的。。。
- HTML表单提交时未执行外部函数
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 将图像上传ajax与表单提交ajax相结合
- Javascript无法处理表单提交
- 如何在我的情况下禁用表单提交
- 加载后的页面与ajax表单提交不起作用
- angularjs-控制器在表单提交时未调用
- 禁用带有字符白名单的表单提交
- 如何使用Google Analytics跟踪表单提交
- 使用javascript将表单提交到iframe目标中
- e.preventDefault在表单提交时被忽略
- AngularJS JQuery Ajax表单提交等效
- JavaScript表单提交帮助
- PHP表单提交和重定向
- 当所有输入文本字段都为空时,禁止表单提交,但当jquery中的任何字段不为空时允许提交
- setTimeOut AFTER jQuery表单提交
- 从函数中选择要触发表单提交的正确元素
- JavaScript表单提交没有't fire asp服务器端点击功能的提交按钮
- 表单提交问题,如何在我的URL末尾获得ID的值
- Javascript使用Confirm取消表单提交