0

jQuery の ajax を使用してスリムな API にデータを POST しようとしています。

ここにjQueryがあります

$.ajax({type:'POST',url:'/api/insert',dataType:'json',data:{name:'matname',label:'Material Name'},
        success:function(data){
            console.log(data);
        }
});​

そしてスリムなindex.php

<?php
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
function json($obj) {
    header('Content-Type','application/json');
    return json_encode($obj);
}

$app = new \Slim\Slim();

$app->post('/insert', function () {
    $request = Slim::getInstance()->request();
    $inputs = json_decode($request->getBody());
    echo json($inputs);
});
?>

index.php にも $app->get() があり、それを削除すると、POST しようとしたときに 405 Method Not Allowed が表示されます。私が POST を実行していないことは明らかで、実際には GET を呼び出しています。jquery経由でPOSTするために何をすべきかを知る必要があります。これはすべて同じドメイン localhost で発生しています

投稿のネットワーク アクティビティは次のとおりです。

Request URL:http://localhost/api/insert
Request Method:POST
Status Code:405 Method Not Allowed
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:96
Content-Type:application/json; charset=UTF-8
Cookie:PHPSESSID=bhj4oot5epdi2rqkn45m0oqgr0
Host:localhost
Origin:http://localhost
Referer:http://localhost/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11
X-Requested-With:XMLHttpRequest
Request Payload
{"fid":3,"table":"input","label":"Material Name","name":"matname","type":"text","mandatory":"Y"}
Response Headersview source
Cache-Control:private
Connection:Keep-Alive
Content-Length:4
Content-Type:text/html
Date:Wed, 12 Dec 2012 15:49:15 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
Pragma:no-cache
Server:Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch mod_ssl/2.2.22 OpenSSL/0.9.8r
X-Powered-By:PHP/5.3.15

助けてくれてありがとう

4

3 に答える 3

1

リクエストは/api/insert

あなたのスリムマッチ/insert

同じはずです。

もう1つのことは、受け入れられたメソッドのオンとオフを切り替えることができるDAVモジュールがApacheにインストールされていることです

POST メソッドが許可されていることを Apache 構成 (サイト構成) で確認してください。

http://httpd.apache.org/docs/2.2/mod/mod_dav.html

于 2012-12-12T15:26:35.510 に答える
0

これを試して

$inputs = json_decode($request->getBody(),true);
于 2014-03-03T06:22:43.690 に答える
0

これを試して

Slim 投稿定義に末尾のスラッシュを含める

$app->post('/insert/', function () {
于 2015-05-09T10:28:15.220 に答える