2011-06-03 75 views
4

當backbone.js將模型保存到服務器時,它會發送一個PUT請求。我如何處理這些與PHP?如何獲取與放入請求一起發送的內容,並將它們存儲在數據庫中?php處理來自backbone.js的請求

回答

8

下面是另一個例子:

$值= json_decode(的file_get_contents( 'PHP://輸入'),TRUE);

  • 這將導致Array(json_decode()的第二個參數)$ values,它將包含您接收的json數據的key =>值對。
5

看到了PHP文檔爲例http://php.net/manual/en/features.file-upload.put-method.php

從php.net:

<?php 
/* PUT data comes in on the stdin stream */ 
$putdata = fopen("php://input", "r"); 

/* Open a file for writing */ 
$fp = fopen("myputfile.ext", "w"); 

/* Read the data 1 KB at a time 
    and write to the file */ 
while ($data = fread($putdata, 1024)) 
    fwrite($fp, $data); 

/* Close the streams */ 
fclose($fp); 
fclose($putdata); 
?> 

你可以離開fwrite的一部分了,當你想將數據存儲到數據庫中。

+0

感謝。我會試試看。當我設置backbone.js將數據發送到該php文件時,它會自動發送到標準輸入流? – bigblind 2011-06-03 10:09:33

+0

究竟....... – Rufinus 2011-06-03 10:12:10

+0

是的......但有沒有辦法php://輸入可以區分PUT和POST請求。在我的情況下,必須爲PUT請求實現不同的邏輯,而POST要求。 – 2014-04-01 11:31:13

4
Backbone.emulateHTTP = true;
如果你想與不支持骨幹網的默認REST/HTTP方式的傳統網絡服務器的工作,你可以選擇開啓Backbone.emulateHTTP。設置此選項將使用HTTP POST僞造PUT和DELETE請求,並在_method參數下傳遞它們。設置這個選項也會使用true方法設置一個X-HTTP-Method-Override頭。

後實現在模型中自己sync功能:http://documentcloud.github.com/backbone/#Sync