0

ここで尋ねた質問に似た別の質問があります: JSAjaxがPHPを呼び出してajax呼び出しデータを取得する

ただし、今回はPUT動詞を扱っています。私はphpにデータを入れるために読んでいたので、以下を使用する必要があります:

file_get_contents("php://input")

リソース:http ://www.lornajane.net/posts/2008/accessing-incoming-put-data-from-php

しかし、これはうまくいかないようです。IIS 7がデータを削除する可能性があるのではないかと思いますか?.. webDavをインストールし、put動詞を解決するためにそれを削除する必要がありましたが、IISにデータを妨げる可能性のあるものが他にあるのではないかと考えていました。サーバーレベルで解析されていますか?

私のajaxリクエストは次のようになります

                var data = '{"storyId":"2","storyName":"a Changed Story.","authorId":"5", "published":"1"}'; 

                $.ajax({
                    type: "PUT",
                    url: BaseUrl + "Story/2",   
                    data: data,
                    success: function(data){
                        console.log(data);
                    },
                    error: function(request){
                        console.log(request);
                    },
                });
4

2 に答える 2

1

PUTおよびDELETEvia$.ajaxは、すべてのブラウザでサポートされているわけではありません。POSTGETは、すべてのブラウザーでサポートされている唯一の 2 つです。

参考までに、 http ://api.jquery.com/jQuery.ajax/ の $.ajax に関する jQuery ドキュメントを確認して ください。

さらに、HTTP デーモンのセットアップを変更して、スクリプトが put にアクセスできるようにする必要があります。これを行うには、ルート .htaccess に次を追加します。

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ handler.php?uri=$1 [L,QSA]

mod_rewiteこれらの変更を行うには、 へのアクセス権が必要であることに注意してください。

ここでphpのドキュメントを参照してPUTください:http://php.net/manual/en/features.file-upload.put-method.php

于 2012-07-13T22:28:08.097 に答える
1

WooHoo この質問のおかげでわかりました。

PHP get PUT リクエストボディ

なぜかこのように「PUT」のデータをリクエストすると

file_get_contents("php://input")

最初の読み取りで、すべてのデータを取得します。ただし、このようにそれを使用してデータを取得しようとすると、null が返されます。これは、POST には当てはまりません。上記のようなデータを 1 回だけ要求するようにするだけで済みました。

私の理論(BSの可能性があります); ) PUT リクエストを読み取る方法は、ファイルまたはストリームを読み取るようなものだと思います。リーダーを再度開始に設定する方法があれば、おそらくそのデータを取得できます。これは、これがどのように機能するかについての私の理論にすぎません。これがそのように機能することを裏付けるリソースは実際にはありません。

于 2012-07-14T07:47:37.447 に答える