[英]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.