如何提交表单并在当前页面的Div中加载目标页面
How to Submit a form and load target page inside a Div on the Current page?
我是JavaScript的新手,没有找到一个可以执行以下操作的工作脚本:
我有一个隐藏的JavaScript表单,应该在onclick
事件上提交。表单中的字段在目标PHP文件中用于创建输出。目标PHP文件应该加载到当前页面的div中,而不需要重新加载整个页面。
问题是我不能让目标PHP文件加载到当前页面的div内,但目标PHP页面只是加载显示我想要在div内的结果。
任何帮助将非常感激!
Update # 1
我做了一个关于jQuery ajax请求的YouTube教程,其中结果显示在同一页面的div中。我反复检查了代码很多次,它看起来和教程中的一样。在教程中,代码是工作的,但对我来说,它不是。下面是我使用的所有文件和代码。
ajax。:
<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
//
$(document).ready(function(){
$("#button").click(function(){
var sendu = $("#username").val();
var sendp = $("#password").val();
$.ajax({
type="POST",
url: "ajax.php",
data: "username="+sendu+"&password="+sendp,
dataType: "json",
success: function(msg,string,jqXHR){
$("#result").html(msg.name+"<br />"+msg.password);
}
});
});
});
</script>
</head>
<body>
Name:<input type="text" id="username" name="username" /><br />
Password:<input type="password" id="password" name="password" /><p>
<input type="button" id="button" value="submit" />
<p><div id="result"></div>
</body>
</html>
jquery.js from this url:http://code.jquery.com/jquery-1.6.2.min.js
ajax.php:
<?
$name = $_REQUEST['username'];
$password = $_REQUEST['password'];
$list = array('name'=>$name, 'password'=>$password);
$c = json_encode($list);
echo $c;
?>
我使用WAMP服务器作为我的本地主机,它可能与设置有关吗?
由于您没有提供代码,所以我不得不猜测:
1)您有AJAX代码加载php响应到一个划分,但页面仍然刷新,在这种情况下-当表单提交时,您需要防止默认事件触发,这样做:event.preventDefault();
将其作为在onClick()中执行的函数中的第一件事。现在应该都能工作了。顺便说一句,你可能想要onSubmit()代替,以防有人点击"Enter"而不是点击"提交"按钮(虽然我不确定它是否是标准javascript/DOM的一部分)。查看一个名为JQuery的javascript库,它使javascript变得轻而易举。
2)你真的想要AJAX,在这种情况下,去jquery.com,下载他们的javascript库,并通过一些教程AJAX请求。基本内容如下:
$("#id_of_your_form").submit(function(event){
event.preventDefault();
$.post( url_of_php_file, $("#id_of_your_form").serialize(), function(data){
$("#id_of_your_div").html(data);
});
});
这段代码是基本的,但是应该可以工作,只要你记得在你的。html文件中包含这个库文件。
#更新
你使用JSON对象有什么特别的原因吗?我只是以前没用过,所以我的输入可能有限。试试这个:
ajax。
<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
//
$(document).ready(function(){
$("#button").click(function(event){ //don't forget to pass the event as an argument
//need this, or your page will follow the url defined in the form
event.preventDefault();
var sendu = $("#username").val();
var sendp = $("#password").val();
$.ajax({
type: "POST",
url: "ajax.php",
data: "username="+sendu+"&password="+sendp, /*shouldn't the method be GET then?*/
dataType: "json",
success: function(msg){
$("#result").html(msg.name+'<br />'+msg.password);
}
});
});
});
</script>
</head>
<body>
<form action="miss.php" method="post">
Name:<input type="text" id="username" name="username" /><br />
Password:<input type="password" id="password" name="password" /><p>
<input type="submit" id="button" />
</form>
<p><div id="result"></div>
</body>
</html>
ajax.php
<?
$name = $_POST['username']; //use $_POST array instead
$password = $_POST['password'];
$list = array('name'=>$name, 'password'=>$password);
$c = json_encode($list);
echo $c;
?>
(注意:我没有检查php代码,因为我说过,我不太熟悉JSON对象)如果不是特别需要json对象,可以尝试使用标准的text/xml来简化。另外,考虑使用$。用代替$。Ajax ,它应该使事情变得更容易。
此外,不要忘记使用形式标签在你的输入或你的html将是无效的(需要引用),最后,如果你在你的javascript html工作,它可能是一个好主意,使用单引号而不是双引号来表示你的字符串。希望对你有所帮助。#更新2
好吧,因为你不需要JSON的基本内容(JSON留到以后),使用文本/xml代替。还有,看看评论。如果WAMP正在运行并且两个文件都在同一个文件夹中,那么这应该都可以工作。下面是代码:
ajax。
<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
//
$(document).ready(function(){
$("#login_form").submit(function(event){ //don't forget to pass the event as an argument
//need this, or your page will follow the url defined in the form
event.preventDefault();
var sendu = $("#username").val();
var sendp = $("#password").val();
$.post("ajax.php", {'username' : sendu, 'password' : sendp}, function(data){
$("#result").html(data); //data is everything you 'echo' on php side
});
});
});
</script>
</head>
<body>
<form action="miss.php" method="post" id="login_form">
Name:<input type="text" id="username" name="username" /><br />
Password:<input type="password" id="password" name="password" /><p>
<input type="submit" id="button" />
</form>
<p><div id="result"></div>
</body>
</html>
ajax.php
<?php
//you used shorthand <? as the php tag, it's probably why your code didn't work
//I would discourage using the shorthand, it's silly
$name = $_POST['username']; //use $_POST array instead
$password = $_POST['password'];
echo $name.'<br />'.$password;
?>
如果这不起作用…检查你是否有skype运行,由于某种原因WAMP不能与skype同时工作,这很奇怪。
您可以使用Ajax。Ajax的运行将允许您刷新页面的某些部分而不是重新加载页面,在您的示例中,这是提交表单并在当前页面上加载目标。我建议您从jQuery开始。
问题是表单还在提交,当我做你想做的事情时,我做的有点不同。试试这个
<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
function gO(frM){
$.ajax({
type:"POST",
url: "ajax.php",
data: frM.serialize(),
dataType: "json",
success: function(msg,string,jqXHR){
$("#result").html(msg.name+"<br />"+msg.password);
}
});
}
</script>
</head>
<body>
<form action="" onsubmit="javascript:gO(this);return false;">
Name:<input type="text" id="username" name="username" /><br />
Password:<input type="password" id="password" name="password" /><p>
<input type="button" id="button" value="submit" />
</form>
<p><div id="result"></div>
</body>
</html>
- 将成功消息加载到DIV中
- 检查HTML是否已加载到DIV中
- 如何在Div加载页面上初始化DataTable
- JQuery-重新加载Div并在点击时调用API
- 在 DIV 标记中动态加载页面
- 如何运行javascript并每分钟重新加载DIV容器(计时器)
- 我想使用hashbang URL(blah.com/#!/thingtoload)动态加载页面内容(在DIV中),我有j
- 选中复选框时仅重新加载一个DIV
- jQuery-检查外部页面上是否存在DIV,如果存在,则加载DIV,否则加载另一个
- WebGL Three.js在画布Div可见之前,不会加载某些内容
- 使用Javascript从DB中筛选结果,这将使DIV重新加载它'基于新参数的内容
- 如何阻止DIV资源在页面上加载
- 当调用DIV时,将一个DIV加载到另一个的顶部
- 如何使用jQuery禁用Div加载
- 在每个页面加载时显示随机 DIV(对于花哨的框模式)
- 如何使页面自动滚动到DIV加载
- JQuery移动Div加载页面访问
- 为特定DIV加载外部CSS
- 将文本输入变量传递到PHP以进行Div加载
- 从 DIV 加载 PHP 脚本