我正在尝试将表单数据从Vue Resource发送到我的PHP页面。我可以看到它显示在PHP页面上,但是当我以JSON的形式发回它时,我得到一个空响应。为什么发送空响应?
看起来问题是在PHP中没有设置提交按钮的值。我不确定为什么会这样。尝试使用$_REQUEST
和axios/$.post
,但没有区别。
if(isset($_POST['submit']){
echo json_encode($_POST);
}
this.$http.post('addalbum.php', new FormData($('#submitalbum')))
.then(data => console.log(data));
<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>
答案 0 :(得分:0)
由于多种原因返回空响应。见下文解释。
看起来用于查找表单的选择器使用jQuery id选择器:
this.$http.post('addalbum.php', new FormData($('#submitalbum')))
但the jQuery function(即$())返回一个集合(数组):
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;
但是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 子>