我正在尝试post方法发送var检查某些条件
如果用户已登录,则显示按钮,然后点击发布数据到ind.php
如果没有登录show label
代码:
<?php
session_start();
$appId = 'fgf';
$appSecret = ''; // Facebook App Secret
$return_url = 'amazonaws.com/'; //path to script folder
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ThenWat</title>
<script>
function showUser(form, e) {
e.preventDefault();
e.returnValue=false;
var sent = form.elements['sent'].value;
alert(sent);
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function(e) {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open(form.method, form.action, true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(sent);
}
</script>
</head>
<body style="height: 560px">
<?php
if (isset($_SESSION['logged_in'])) {
?>
<form action="ind.php" method="POST" onsubmit="showUser(this, event)">
<pre>
<label>Enter the sentence: <input type="text" name="sent"></label><br/>
</pre>
<input type="submit" class="submit" name="insert" value="submit"/>
</form>
<?php
}
?>
<?php
if (!isset($_SESSION['logged_in'])) {
?>
<label>not logged in </label>
<?php
}
?>
<div id="txtHint"> </div>
</body>
</html>
ind.php
<html>
<body>
<?php
$s=$_POST['sent'];
echo $s;
?>
</body>
</html>
总是说没有登录,如果我删除条件数据不在ind.php上发布。
错误:Undefined index: sent in /opt/lampp/htdocs/a/FB/ec2/ind.php on line 5
答案 0 :(得分:0)
为了清晰和简单起见,此解决方案使用jQuery。我确实上面询问jQuery是否可以接受并且没有得到答案,所以如果不需要请注释(而不是downvote),我会删除答案。
请注意,我为您的表单分配了一个ID属性,以便更轻松地在DOM中选择它。如果没有为表单分配ID,您仍然可以选择它,因此:
$('form').submit({});
但是,如果您在页面上有多个表单,那将会令人困惑。 始终最好在您的元素中使用ID,以便您可以准确指定要选择的元素。
此外,从表单标记中删除了onSubmit()
,并将其与其余的javascript代码放在一起,因此:
$('#myForm').submit(function(e) {
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#myForm').submit(function(e) {
var sent = $('[name==sent]').val();
$.ajax({
type: "POST",
url: "ind.php",
data: "sent=" + sent
})
.done(function(recd) {
$('#txtHint').html(recd);
});
e.preventDefault();
}); //END form submit
}); //END document.ready
</script>
</head>
<body style="height: 560px">
<?php
if (isset($_SESSION['logged_in'])) {
?>
<form id="myForm" action="ind.php" method="POST">
Enter the sentence: <input type="text" name="sent"><br/>
<input type="submit" value="Submit"/>
</form>
<?php
}
if (!isset($_SESSION['logged_in'])) {
?>
<p>Not logged in </p>
<?php
}
?>
<div id="txtHint"> </div>
</body>
</html>
最后,您的ind.php
文件只需要包含此内容:
<?php
$s = $_POST['sent'];
echo 'PHP side received: ' . $s;
答案 1 :(得分:0)
要回答评论中的问题:
正如您所知,javascript是一种客户端编程语言。
jQuery是一种更简单,更简洁,更一致(并且自动跨浏览器兼容)的javascript形式。 jQuery是一个运行在javascript之上的库 - 你输入jQuery代码,并在运行时转换为javascript。
AJAX可以用javascript或jQuery编写 - 但需要很多代码才能在javascript中执行。 AJAX只是一个程序(不是语言!),用于在不刷新页面的情况下与服务器交换数据。
FORMS是一种从浏览器页面(客户端)向服务器发送数据的方法,以便服务器可以处理它。表单提交时,始终刷新/重定向页面。表单可以使用表单标记中的action=""
(即,不在action属性中指定其他页面)将提交到同一页面。但是,这也会刷新页面。与服务器交换数据但不刷新页面的唯一方法是使用AJAX。
如果您使用AJAX然后想要将页面重定向到其他位置,则可以使用javascript命令:
window.location.href = "http://anotherpage.php";
最大的好处是使用带有window.location.href的AJAX是它给你的灵活性。例如,您可以:
success:
或done
功能)正如您所看到的,AJAX为程序员提供了更多的控制权。