没有使用AJAX

时间:2017-07-20 18:53:02

标签: php vue.js

无论我尝试过什么,当我使用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>

3 个答案:

答案 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)); 或将名为“提交”的隐藏字段设置为工作。