在从jQuery $ .post(...)调用的AJAX页中获取$ _POST数组

时间:2019-02-11 08:49:21

标签: php jquery ajax

请查看this。我试图理解代码,但在这里遇到了麻烦:

$("#submitmsg").click(function(){   
    var clientmsg = $("#usermsg").val();
    $.post("post.php", {text: clientmsg});              
    $("#usermsg").attr("value", "");
    return false;
});
  1. 基本上,如果您按submit按钮,则称其为 post.php页里面有所有内容,对吧?
  2. 问题,为什么即使我post.php页面也没有真正加载 删除了return false?我断定这是因为在我的form中, action = "",这意味着我基本上是在重新加载同一页面。 我说的对吗?
  3. 然后,为什么AJAX甚至都没有加载post.php页面 虽然在上面的$.post中被称为?是因为我的AJAX并未真正加载页面,而是只是在所述页面中执行了所有操作而没有重定向我的当前页面?

如果我的问题看起来前后矛盾,令人困惑,我事先表示歉意。如果有人可以建议我并说出我在这里出了错(我觉得很多),那真是太好了。

下面的表格:

<form name="message" action="">
        <input name="usermsg" type="text" id="usermsg" size="63" />
        <input name="submitmsg" type="submit"  id="submitmsg" value="Send" />
</form>

post.php页面如下:

<?
session_start();

    if(isset($_SESSION['name'])){
        $text = $_POST['text'];

        $fp = fopen("log.html", 'a');
        fwrite($fp, "<div class='msgln'>(".date("g:i A").") <b>".$_SESSION['name']."</b>: ".stripslashes(htmlspecialchars($text))."<br></div>");
        fclose($fp);
    }
?>

在jQuery AJAX调用上面的页面时(这是正确的术语吗?),是否可以访问上面的页面?当我使用$_POST运行jQuery AJAX时,我想看到其中包含的echo变量。

1 个答案:

答案 0 :(得分:0)

首先,您将提交表单,因为您使用了输入Submit,并且不会触发您的jquery。您可以使用preventDefault这样的方法来完成此操作:

$("#submitmsg").on('click', function(e){
  e.preventDefault();
  var clientmsg = $("#usermsg").val();
  $.post("post.php", {text: clientmsg});              
  $("#usermsg").attr("value", "");
  return false;
});

您可以使用Chrome开发者工具(右键单击>检查元素)查看AJAX文件中发生的情况,然后转到“网络”标签。