0

我有 2 个 div,一个用于菜单链接,另一个用于内容。我想要做的是单击一个菜单链接和该菜单链接的页面以加载到内容 div 中。

我已经这样做了,并且有效。问题是 div 内的页面包含一个没有显示成功消息的表单,并且数据库没有更新。

它所做的只是刷新到主内容页面,或者像内容页面一样打开当前窗口,或者打开一个带有内容页面的新窗口。

有什么解决方案?

Logged_in.php

左 div = 菜单

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){

  $(".menuLink").click(function(){

$.ajax({
  type: "POST",
  url: $(this).attr('href'),
  data: "",
  cache: false,
  success: function(html){ $("#Middle").html(html); }
});

 });

});
</script>

</head>
<body>
    <div id="head">

<div class="lefttop" align="center">

  <div class="lefttopleft">
  <a class="menuLink" href="Test.php" onclick="return false;"><img src="Images/logo.jpg" width="94" height="21" /></div>

当单击该链接时,页面加载到内容 div 中,所以现在该页面在内容 div 中显示一个表单,我遇到的问题是填写表单,单击提交,它更新数据库,它只是刷新到主要内容 div或者只是页面加载文件点击或在新窗口中这样做。

内容 div 中的 Test.php

session_start();
include_once("connect.php");
include_once("functions.php");

if($_POST['WallSubmit'] && $_POST['Wall']){

  $wall = makesafe($_POST['Wall']);

mysql_query("INSERT INTO `Wall` (`ID`, `Username`, `MessageBy`, `Date`, `Message`) VALUES ('', '', '$username', '" . time() . "', '$wall')");

}

?>

<body>
<form method="post">
  <table class="default" style="width: 80%" align="center">
<tr>
  <td class="subheader">Wall</td>
</tr>
<tr>
  <td class="content">Post a comment.<br /><textarea name='Wall' id='Wall' style='width: 99%; height: 110px;'></textarea><br /><br/><center><input type='submit' value='Post' name='WallSubmit' /></center><br /><hr><br />Latest Comments.</td>
</tr>
</td>
</table>
</form>
</body>
</html>

有没有一种简单的方法可以解决我到处都看过的问题?

4

1 回答 1

1

首先,尝试在表单标签上设置一个操作。该操作定义了表单将提交到的页面。

<form method="post" action="Test.php">

有了这个表单应该被提交到Test.php。如果它仍然没有做任何事情,请尝试在页面顶部打印变量转储(手册) 。var_dump($POST);然后,您将看到帖子属性的所有设置值。从那里开始应该很容易找到错误。

编辑

在您发表评论后,我意识到您正在尝试使用 AJAX 发送表单并重新加载内容 div。您必须分两步执行此操作。首先将表单的数据发送到Test.php,然后重新加载内容div。如果偶然发现这个问题:jQuery AJAX 提交表单。这可以帮助您如何提交表单。如果你想使用返回值,你可以尝试这样的事情:

$.post("Test.php", $("#form").serialize(),
   function(data) {
     alert("Returned data: " + data);
   });

jQuery.post()

于 2012-06-25T14:39:05.240 回答