最新消息: 新版網站上線了!!!

vue ajax Request playload請求php

一、場景

使用vue的ajax post訪問php服務端,上傳文件,并且發送數據給php服務端,使用$_POST,$_REQUEST,都獲取不到相應的數據。后來通過瀏覽器查看,請求數據已經成功發送到php,只是接收方式不對。發現請求數據格式為request payload(標準的json)

二、php后臺如何接收request payload格式的數據?

1、錯誤的方式$_POST,$_REQUEST,$_GET這些平常使用的方式都接收不到

2、正確的方式file_get_contents('php://input')

補充:PHP 怎么獲取request payload的值?

request payload的值是這樣的

{"aa":"1","bb":"2"}

答案:

if (isset($GLOBALS['HTTP_RAW_POST_DATA'])) {    $final = $GLOBALS['HTTP_RAW_POST_DATA']; } else {    $final = file_get_contents('php://input'); }

三、實例

1、前端vue+ajax

<script src="{$basehref}gui/javascript/vue.min.js"/></script/>
<script src="{$basehref}gui/javascript/axios.min.js"/></script/>
<div class="cd-popup">
<div class="panel-head" id="add"><strong><span class="title">上傳數據</span></strong></div>
<div class="body-content">
<input id="upload_file" multiple="multiple" style="display:" type="file" />
<button v-on:click="chooseFile">選取文件</button>
<button v-on:click="uploadfile">上傳</button>
</div>
</div>
<script type="text/javascript"/>
    new Vue({
        el:".cd-buttons",methods:{
            chooseFile:function () {
                jQuery("#upload_file").click() //jquery click選擇文件
                },
            uploadfile:function () {
                var upload_file = jQuery("#upload_file");
                var f = upload_file[0].files[0]; //id=upload_file 的input中獲取
                files objectconsole.dir(f)var reader = new FileReader(); //實例化讀取對象reader.readAsDataURL(f); //讀取本地文件f到內存:格式為DataURL//讀取完成執行reader.onloadend事件
                reader.onloadend = function () {
                    var dataURL = reader.result; //讀寫的文件保存在reader對象的result屬性中
                    axios({
                        method:"post",
                        url:"{$basehref}lib/usermanagement/usersExcel.php?act=ajaxImport",//給php服務端傳遞的數據
                        data:{filed:dataURL,id:"12"}}).then(function (res) {console.log(res)
                        })
                }
            }
        }
    })
</script/>

2、服務端php文件(usersExcel.php)

$function_name = $_REQUEST['act'];

//函數自動加載

if(function_exists($function_name)){

call_user_func($function_name,$db);

}

function ajaxImport($db){

//    var_dump($_REQUEST);

$final = file_get_contents('php://input');

var_dump($final);

}

瀏覽器查看結果:

1542014343(1).png

瀏覽器查看php服務端響應結果:

1542014419(1).png

轉載請注明:谷谷點程序 » vue ajax Request playload請求php

体彩25选5开奖号码