簡體   English   中英

在PHP中獲取Json表單數據

[英]Getting Json Form Data in PHP

這似乎是一個不尋常的json問題,但我可以向您保證,我找不到我的問題的答案。

在下面的代碼示例中,我想要獲取(可能是正在傳輸的json數據進行解碼 。我已經嘗試過json_decode($ _ POST) 。順便說一句,請求類型是POST 。無論如何,我都可以將json數據獲取到數組或變量,所以當我想調用姓名年齡時 ,可以輕松地從請求中檢索它們嗎?

我正在關注一個ribs.js教程,這是我的模型;

<script type="text/javascript">
        var URL=Backbone.Model.extend({
            initialize: function()
            {
                console.log("URL has been initialized");
            },
            defaults:{
                name:'not defined',
                age:'not defined'
            },
            urlRoot:"/Backbone/manage.php",
            url:function(){
                var base = this.urlRoot || (this.collection && this.collection.url) || "/";
                console.log("Base has been produced");
                if(this.isNew()) return base;

                return base+"?id="+encodeURIComponent(this.id);
            }
        });

        var url=new URL({name:"John",age:10});
        url.save();
    </script>

稍后,我使用Google Chrome瀏覽器以觀察網絡,並且可以清楚地看到數據是作為表單數據傳遞的。 這是Google網絡工具的結果;

model:{"name":"John","age":10}

如果您將JSON有效負載作為原始發布數據獲取,則可以使用以下命令讀取它:

json_decode(file_get_contents('php://input'));

如果php.ini設置允許該變量確實被填充,您也可以從$HTTP_RAW_POST_DATA讀取它。

由於您得到的是:

model=%7B%22name%22%3A%22John%22%2C%22age%22%3A10%7D

您不能直接將其解碼為JSON,因為它不是有效的JSON。

因此,請嘗試:

parse_str(file_get_contents('php://input'), $post);
$myObject = json_decode($post['model']);

您需要在$ _POST數組的model鍵上執行json_decode。 model密鑰包含您需要解碼的json字符串。

$modelData = json_decode($_POST['model']);

然后,您可以訪問$modelData->name$modelData->age

編輯:

嘗試將其添加到骨干設置中:

Backbone.emulateHTTP = true;
Backbone.emulateJSON = true;

這樣可以使您獲得application/x-www-form-urlencoded而不是application/json 然后,這應正確填充$ _POST數組。

請參閱此處以獲取說明: http : //documentcloud.github.com/backbone/docs/backbone.html#section-162

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM