我创建了一个Ionic应用程序,该应用程序调用API来发布用户的当前位置。
请求的工作原理如下:
邮寄:http://mywebsite.com/api/Patients/AddLocation/17
身体:
{
"Latitude": 51.3753786,
"Longitude": -0.0833691
}
但是,我的Ionic应用程序中的以下代码可以正常工作:
$http.post('http://mywebsite.com/api/Patients/AddLocation/' + $scope.id, data)
.success(function () {
console.log('Updated location');
})
.error(function (error) {
console.log('Error updating location');
console.log("Error: " + error);
});
其中'数据'与上面的身体相同。
为什么这不起作用的任何想法?
更新:
以下是网络请求的几个屏幕截图:
网络请求可在imgur RWNDF.png获得
Postman request
答案 0 :(得分:0)
如果您未在服务器中启用cors,则会发生这种情况。 在您的服务器中启用cors。 即使你不启用角色, 如果您使用chrome中的任何扩展名启用了cors,则get方法将完全有效。
答案 1 :(得分:0)
这是因为CORS。从服务器端启用cros,并在HTTP Access-Control-Allow-Origin: *
中设置标头。
如果您的服务器应用是expressjs app
,请使用以下代码启用CORS
var cors = require('cors');
.....
app.use(cors());
否则使用chrome extension answers
这应解决问题
答案 2 :(得分:0)
将此与使用相同API并且有效的姐妹应用进行比较后,我能看到的唯一区别是一些插件不同。
为了解决这个问题,我删除了插件文件夹和平台文件夹,重新添加了android,只需要我需要的插件,现在可以了。我想这可能是我使用错误的插件混合创建的一些错误。
一个非常不满意的答案,但现在所有请求都有效!