我还有一个问题,类似于我在这里提出的一个问题: JS Ajax calling PHP and getting ajax call data
然而这次我正在处理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);
},
});
答案 0 :(得分:1)
PUT
和DELETE
来自$.ajax
。 POST
和GET
是所有浏览器都支持的唯一两个。
供参考,请查看`$ .ajax的jQuery文档: http://api.jquery.com/jQuery.ajax/
此外,您需要更改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
进行这些修改。
请参阅PUT
上的php文档:http://php.net/manual/en/features.file-upload.put-method.php
答案 1 :(得分:1)
WooHoo我想通了这个问题。
出于某种原因,如果您要求“PUT”这样的数据
file_get_contents("php://input")
在第一次阅读时,它将获得所有数据。但是第二次尝试使用它来获取数据将返回null。 POST不是这种情况。我只需要这样做,以便我们只需要像上面那样请求一次数据。
我的理论(可能是BS); ) 我认为它读取PUT请求的方式就像读取文件或流,如果有一种方法可以将读取器设置为重新启动可能会获得该数据。这只是我关于它是如何工作的理论我没有任何资源支持这样的工作。