我不明白这是什么问题(我的代码正在运行,我不知道为什么)。
我的api资源正在工作(因为数据已插入数据库中),但是我仍然找不到404方法。
这是我的角度控制器
controllers.tradeCtrl = function($scope, $routeParams, userFactory, productsFactory, sessionFactory, $timeout, tradeFactory){
$scope.sendTradeRequest = function () {
var requestedUserId = $scope.user.id_user;
var requestedUserItemsIds = $scope.i;
var myRequestedItemsIds = $scope.o;
tradeFactory.createTrade(requestedUserId, requestedUserItemsIds, myRequestedItemsIds).then(function(response){
console.log(response);
}
我的工厂
app.factory('tradeFactory', ['$http', '$location', function($http, $location){
var factory = {};
factory.createTrade = function(requestedUserId, requestedUserItemsIds, myRequestedItemsIds){
return $http({
method: 'POST',
url: $location.protocol() + '://' + $location.host() + '/server/api/trades/makeTrade',
headers : { 'Content-Type': 'application/x-www-form-urlencoded' },
data : $.param({
requestuserId : requestedUserId,
requestedUserItemsIds : requestedUserItemsIds,
myRequestedItemsIds : myRequestedItemsIds
})
}).then(function successCallback(response){
console.log(response);
return response;
},function errorCallback(response) {
console.log('Failed to create new trade: ' + response);
});
}
return factory;
}]);
我的休息控制器在codeigniter中制成
class Trades extends REST_Controller {
public function __construct(){
parent::__construct();
$this->load->model('Model_trades');
}
public function index_get(){
$this->response($this->Model_trades->get_all());
}
public function newTrade_post(){
$otherUserId = $this->input->post('requestuserId');
$otherUserItemIds = $this->input->post('requestedUserItemsIds');
$currentUserItemIds = $this->input->post('myRequestedItemsIds');
$this->response($this->Model_trades->create($otherUserId, $otherUserItemIds, $currentUserItemIds));
}
}
我在Codeigniter中的模型函数,用于插入新记录
function create($otherUserId, $otherUserItemIds, $currentUserItemIds){
$data = array(
'request_id_user' => $this->session->userdata('id_user'),
'request_products' => $currentUserItemIds,
'response_id_user' => $otherUserId,
'response_products' => $otherUserItemIds,
'date_c' => date("Y-m-d H:i:s"),
'id_status' => 1
);
$this->db->insert('trades', $data);
}
最后控制台放了
POST http://myApp.com/server/api/trades/makeTrade 404 (Not Found)(anonymous function) @ angular.js:10765sendReq @ angular.js:10558serverRequest @ angular.js:10268processQueue @ angular.js:14792(anonymous function) @ angular.js:14808Scope.$eval @ angular.js:16052Scope.$digest @ angular.js:15870Scope.$apply @ angular.js:16160(anonymous function) @ angular.js:23618jQuery.event.dispatch @ jquery-2.1.4.js:4435elemData.handle @ jquery-2.1.4.js:4121
factory.js:266 Failed to create new trade: [object Object]
controllers.js:662 undefined
但是新记录在我的数据库中创建。问题是什么?
最佳答案
您的模型函数不返回任何内容,因此$this->response
不会显示真实返回
尝试
function create($otherUserId, $otherUserItemIds, $currentUserItemIds){
$data = array(
'request_id_user' => $this->session->userdata('id_user'),
'request_products' => $currentUserItemIds,
'response_id_user' => $otherUserId,
'response_products' => $otherUserItemIds,
'date_c' => date("Y-m-d H:i:s"),
'id_status' => 1
);
return $this->db->insert('trades', $data);
}
关于javascript - Api返回404,但记录已插入数据库中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35585774/