1

我想用 PHP 中的 AngularJS 和 Arrest REST API 作为后端来做一个简单的 CRUD 应用程序。

GET 和 DELETE 工作得很好。但是 PUT 和 POST 给我带来了麻烦。我需要以更基本的格式而不是 JSON 格式提供数据(我不想过多地挖掘 Arrest API)。

我尝试通过使用 jQuery 完成的简单测试让 PUT 和 POST 工作,我得到以下网络活动。此处显示的 POST 工作正常。

`Request URL:http://anyhost.com:8888/angular18/api/allIP
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:43
Content-Type:application/x-www-form-urlencoded
Host:anyhost.com:8888
Origin:http://anyhost.com:8888
Referer:http://anyhost.com:8888/angular18/api/api-test.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36
X-Requested-With:XMLHttpRequest
Form Dataview sourceview URL encoded
name:mynewxxx
provider:xxx
technology:28xxx
Response Headersview source
Connection:Keep-Alive
Content-Length:44
Content-Type:application/json
Date:Fri, 19 Jul 2013 19:45:46 GMT
Keep-Alive:timeout=5, max=99
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8x DAV/2 PHP/5.3.6
X-Powered-By:PHP/5.3.6`

现在,当我使用 AngularJS 作为工厂执行此操作时,以下代码

TodoApp.factory('Todo', function($resource) {
return $resource('api/allIP/:id', {id:'@id'}, {update:{method: 'PUT'}});
});

我得到了 POST 的网络活动,如下所示,实际插入数据库不起作用。我想我应该能够强制 AngularJS 以不同的方式对有效负载进行编码,但我不知道该怎么做。如果有人可以帮助我将非常感谢彼得

顺便说一句:我在这个问题条目上将所有 localhost 信息更改为 anyhost.com,因为它不允许我保留 localhost

 `Request URL:http://anyhost.com:8888/angular18/api/allIP
Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:50
Content-Type:application/json;charset=UTF-8
Host:anyhost.com:8888
Origin:http://anyhost.com:8888
Referer:http://anyhost.com:8888/angular18/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36
X-Requested-With:XMLHttpRequest
Request Payloadview parsed
{"name":"xxx","provider":"xxx","technology":"xxx"}
Response Headersview source
Connection:Keep-Alive
Content-Length:45
Content-Type:application/json
Date:Sat, 20 Jul 2013 07:09:29 GMT
Keep-Alive:timeout=5, max=100
Server:Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8x DAV/2 PHP/5.3.6
X-Powered-By:PHP/5.3.

`

4

1 回答 1

0

有一篇关于转换所有 $http 请求的帖子:http: //victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/

于 2013-07-20T21:25:20.800 回答