PHP发回空身

时间:2017-07-20 11:02:11

标签: php http post vue.js html-form

我正在尝试将表单数据从Vue Resource发送到我的PHP页面。我可以看到它显示在PHP页面上,但是当我以JSON的形式发回它时,我得到一个空响应。为什么发送空响应?

编辑:

看起来问题是在PHP中没有设置提交按钮的值。我不确定为什么会这样。尝试使用$_REQUESTaxios/$.post,但没有区别。

PHP:

if(isset($_POST['submit']){
   echo json_encode($_POST);
}

JS:

this.$http.post('addalbum.php', new FormData($('#submitalbum')))
.then(data => console.log(data));

HTML:

<form class="col s12" id="submitalbum" method="post" action="addalbum.php">
    <div class="row">
        <div class="input-field col s6">
            <input  name="artist" placeholder="Artist" type="text">

        </div>
        <div class="input-field col s6">
            <input  name="title" placeholder="Title" type="text">

        </div>
    </div>
    <div class="row">
        <div class="input-field col s12">
            <input  name="genre" placeholder="Genre">

        </div>
    </div>
    <div class="row">
        <div class="input-field col s12">
            <input  id="released" type="number" name="released" placeholder="Year Released">
        </div>
        <button @click.prevent="addNewAlbum" name="submit" class="waves-effect waves-light btn">Submit</button>
    </div>
</form>

1 个答案:

答案 0 :(得分:0)

由于多种原因返回空响应。见下文解释。

jQuery选择器

看起来用于查找表单的选择器使用jQuery id选择器:

this.$http.post('addalbum.php', new FormData($('#submitalbum')))

the jQuery function(即$())返回一个集合(数组):

&#13;
&#13;
var submitAlbumCollection = $('#submitalbum');
console.log('submitAlbumCollection: ', submitAlbumCollection);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form class="col s12" id="submitalbum" method="post" action="addalbum.php"></form>
&#13;
&#13;
&#13;

但是FormData()需要&#34; HTML <form>元素&#34; 1 ,而不是数组。

因此,如果您要使用jQuery函数,请从中获取第一个元素以获取对表单的引用:

var forms = $('#submitalbum');
if (forms.length) {
    this.$http.post('addalbum.php', new FormData(forms[0]))

按钮元素不发送值

<button>不是表单输入,因此表单数据中不会有相应的值。如果您想检查表单值,请尝试检查艺术家,标题等。

if(isset($_POST['artist'])) {
    echo json_encode($_POST);
}

如果你真的想检查$_POST['submit']是否真实,你可以:

  • 添加隐藏的输入:

    <input type="hidden" name="submit" value="1">
    
  • 将按钮转换为提交按钮

    <input type="submit" name="submit" value="1">
    
  • this answer获取建议并手动append输入表单数据

参见this phpfiddle中的演示。请注意,phpfiddle不允许多个页面,因此来自 addalbum.php 的代码放在顶部,对它的引用被替换为<?php echo $_SERVER['PHP_SELF'];?>(即在客户端)码)。

缺少括号

此外,PHP代码的第一行有一个缺少的括号:

if(isset($_POST['submit']){

要更正此问题,请添加缺少的右括号以关闭表达式:

if(isset($_POST['submit'])){

1 <子> https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData