如何使用PHP和JavaScript $ _POST表单?

时间:2017-01-03 11:36:11

标签: javascript php

我想使用PHP发布我的表单,但由于某种原因似乎不可能,无论我尝试发布消息总是空的。

我试过这段代码:

HTML

<div class="message-container">
    <form id="imageForm" name="form" action="/requests/post_message.php" method="POST" enctype="multipart/form-data">
        <div class="message-form-content">
            <div class="message-form-header">
                <div class="message-form-user"></div>
                <div class="message-form-private"></div>
                <div class="message-loader" id="post-loader" style="visibility: hidden"><div class="preloader"></div></div>
            </div>

            <div class="message-form-inner">
                <textarea id="post" class="message-form" placeholder="message_form" name="message"></textarea>
            </div>

            <div class="selected-files"><span id="queued-files">0</span> Files selected</div>
            <div class="message-form-input"><input type="text" name="value" id="form-value"></div>

            <div type="button" name="action" class="message-btn button-active" value="Post"><a onclick="startUpload()">Post</a></div>

        </div>
        <iframe id="my_iframe" name="my_iframe" src="" style="display: none"></iframe>
    </form>
</div>

的JavaScript

function startUpload() {
    document.getElementById("imageForm").target = "my_iframe";
    document.getElementById("imageForm").submit();
    alert($("#imageForm").serialize()); //for debug
    document.getElementById("post-loader").style.visibility = "visible";
}

post_message.php

<?php
include("../includes/config.php");
session_start();

print_r($_POST['message']);

从网络控制台我仔细检查了请求,这是正确的,我可以看到POST with status 200

但是,当我写入textarea并单击Post按钮时,JS alert会正确显示消息,而我的PHP的print_r为空,我的表格有什么问题?

2 个答案:

答案 0 :(得分:1)

在实际解决问题之前,答案已被接受。我不知道到底问题究竟在哪里。最初提问者说GET根据他的浏览器检查员发送了请求,但后来撤回了。

我只发现这是错的:

alert($("imageForm").serialize()); //for debug

应该是:

 alert($("#imageForm").serialize()); //for debug

更好的是:

 console.log($("#imageForm").serialize()); //for debug

答案 1 :(得分:-1)

如果将脚本放在标题中的某个位置,它应该可以工作。

JSFiddle -> Javascript -> Load type -> No wrap - in <head>

Working fiddle