无论我尝试过什么,当我使用Vue Resource打电话时,isset都无法正常工作。它仅在我关闭preventDefault并直接进入PHP页面时才有效。
JS:
this.$http.post('http://localhost/musicdatabase/addalbum.php', new FormData($('#submitalbum')))
.then(data => console.log(data.body));
PHP:
if(isset($_REQUEST['submit'])){
echo json_encode($_REQUEST);
}
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" type="submit" name="submit" class="waves-effect waves-light btn">Submit</button>
</div>
</form>
答案 0 :(得分:0)
Ajax没有发送“类型提交”。通过下一个示例更改PHP代码以进行检查。
PHP
var_dump( $_POST );die();
Form是一个php数组,你删除json_decode 。
答案 1 :(得分:0)
你走了:
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo json_encode($_REQUEST); exit; // this is important!
}
但我不确定为什么你的代码不起作用,$ _REQUEST的主要问题不是它有来自$ _GET和$ _POST的数据,而是来自$ _COOKIE,它们有时可以互相覆盖。 / p>
答案 2 :(得分:0)
您不能按原样使用FormData对象,因为它实现了迭代器,您需要将其转换为具有键值对数据的对象。请尝试更改您的代码,如下所示:
JS:
$sopce.profileDetails = null;
$scope.setProfileDetails = function(username){
$http.get("services/rest/getUser/" + username).then(function(response){
$scope.profileDetails = response.data;
}, function(Response){
});
}
<强>更新强>
您必须删除条件var postData = {};
for(var entry of new FormData($("#submitalbum")[0]).entries()){
postData[entry[0]] = entry[1];
}
this.$http.post('http://localhost/musicdatabase/addalbum.php', postData)
.then(data => console.log(data.body));
或将名为“提交”的隐藏字段设置为工作。