3

私はRESTAPIとBackbone.jsでCodeIgniterを使用しています。Webサーバーはlighttpdです。また、次のようにURLを書き換えてURLからindex.phpを削除するためにlighttpd.confを変更しました:-

url.rewrite-once = (
 "/(.*)\.(.*)" => "$0",
 "/(css|files|img|js|stats)/" => "$0",
 "^/([^.]+)$" => "/index.php/$1"
)

jsからの呼び出しはCodeigniterPut関数に到達しますが、$ this-> put()の値は空です。PUTデータの値が空である理由を追跡するのを手伝ってください。

注:URLを書き直さない場合、これは完全に正常に機能します。また、これはApacheWebサーバーでも機能します。

REST_Controller.phpファイルのデバッグ時に、関数 "protected function _parse_put()"で、ファイル "php://input"の内容も空であることがわかりました。

以下は、PUT呼び出しを行う際にChromeウェブインスペクターから取得したリクエストヘッダーとペイロードです:-

**Request Headers**
PUT http://10.82.0.160/cav_settings/api/2 HTTP/1.1
Pragma: no-cache
Origin: http://10.82.0.160
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17
Content-Type: application/json
Accept: application/json, text/javascript, */*; q=0.01
Referer: http://10.82.0.160/settings/2
X-Requested-With: XMLHttpRequest
**Request Payload**
{"aggregation":{"enabled":"false","mode":""},"dns":{"auto":"false","servers":["10.0.0.5","10.20.0.20"]},"id":"2","dhcp":"false","ip":"10.82.0.160","netmask":"255.255.255.0","default_gw":"","mtu":"1500"}
4

1 に答える 1

0

Backbone.emulateJSON=true;を使用できます。

これはあなたの疑問に対する最良の答えです:)

CodeigniterRESTサーバーでのBackbone.jsのPUT/DELETEの問題

于 2013-02-08T07:11:50.343 に答える