防止 PHP 在新页面中显示结果
Prevent PHP showing results in new page
我正在尝试获取一个PHP文件来收集目录信息,然后将其显示在我当前的html页面上。
我想阻止在新页面上打开 php 代码的结果 (PHP_Function.php),而是在完成我的 PHP 代码后将它们发布在我的主 html 页面上的div 上。
我的 html 代码如下:
<form id="myFormName" method="post" action="PHP_Function.php">
<input type="submit" class="learnButton" name="insert" value="Find Available Evidence" />
</form>
<script>
$(function(){
$("#myFormName").submit(function(event) {
event.preventDefault();
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'json',
success: function(data)
{
//display data...
//("#results").html(data.name).show;
//console.log(data);
$("#results").append(data.name);
}
});
});
});
</script>
<div id="results"></div>
PHP代码我有一个数组,我希望在我的主html页面(IfPresentArray)上发布,我已经尝试过:
echo json_encode($IfPresentArray);
此外,这段代码确实正确地给了我想要的结果,但我希望将它们写入"结果"div。并且不打开带有结果的新 PHP 页面
我认为要做到这一点,我必须使用 JSON 和 AJAX 将结果发布回页面,但我正在努力做到这一点,非常感谢一些帮助。
第一件事是防止表单发出HTTP请求。
$("#myFormName").submit(function(event) {
event.preventDefault(); // prevent form submission
这比return false;
更好,因为JavaScript中的任何失败都意味着永远不会到达return语句,并且表单将触发HTTP请求。因此,您现在可以删除return false;
。
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'json', // this is what you expect back from the php (i.e. json, html, etc)
success: function(data) {
// data will be your json array or object
console.log(data); // will allow you to see return data in web browser inspection tools
$("#results").append(data.name).show(); // show is a function (only needed if you hide the results div to start with).
}
});
然后只需检查其余 JavaScript 上的括号是否匹配。使用具有语法突出显示的程序通常有助于实现这一点。
问题是我缺少括号/语法不正确。具体在代码中:
("#results").append(data);
一开始缺少一个 $。
感谢@diggersworld(和逻辑思维)
修改和完成的代码如下所示:
<form id="myFormName" method="post" action="PHP_Function.php">
<input type="submit" class="learnButton" name="insert" value="Find Available Evidence" />
</form>
<script>
$(function(){
$("#myFormName").submit(function(event) {
event.preventDefault();
$.ajax({
type: "POST",
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'json',
success: function(data)
{
//display data...
//("#results").html(data.name).show;
console.log(data);
$("#results").append(data);
}
});
});
});
</script>
PHP 代码保持不变:
echo json_encode($IfPresentArray);
相关文章:
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- JavaScript循环无法正确计算/显示结果
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- BMI计算器以Javascript显示结果
- 在表中显示结果
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 搜索XML文件并使用javascript显示结果
- Moment.js不显示结果
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- 防止 PHP 在新页面中显示结果
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- Angular-如何显示结果,仅在未选中时显示
- backbone.js视图没有't由于异步获取而显示结果;t渲染
- jqueryajax帖子将我发送到操作页面,并且不会显示结果数据
- 添加两个数字,并使用Javascript在文本框中显示结果
- 接受用户输入,与JSON数据匹配,并以javascript显示结果
- 自动完成 JQuery 不显示结果
- 控制台.log或显示结果的函数
- 提交表单,使用脚本处理信息,并在同一页面上显示结果
- AJAX 实时搜索仅当结果以相同的第一个字母开头时才显示结果