我使用免费的api来收集用户Ip-adress的信息。
这是方法:
public JsonResult GetIp()
{
string url = "http://ip-api.com/json";
dynamic googleResults = new Uri(url).GetDynamicJsonObject();
return Json(googleResults, JsonRequestBehavior.AllowGet);
}
该方法应该在呈现页面时被调用,所以我在想这样的事情:
$(document).ready(function () {
$.ajax({
type: "POST",
url: '@Url.Action("GetIp", "Home")',
contentType: "application/json; charset=utf-8",
dataType: "json",
//Here i need code that receives the Json from the controller...
});
});
此外,这是开展此类任务的最佳方式吗?我一直在读Json也可以作为一个简单的字符串传递?有关最佳实践的任何提示表示赞感谢。
答案 0 :(得分:2)
$(document).ready(function () {
$(window).load(function(){
$.ajax({
type: "POST",
url: '@Url.Action("GetIp", "Home")',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(resp){
//resp is the returned json variable from the server side
//you can use it like "resp.id" or "resp.anyOtherValue"
}
});
});
});
答案 1 :(得分:1)
你不会以这种方式获取客户端ip,你将获得服务器ip,因为那是打电话的机器。
你想要的是直接用javascript打电话,所以请求ip就是客户端。
如果您查看该API的响应标头,Access-Control-Allow-Origin = *,那么您应该可以直接使用该URL。
正如Amin所说,只需添加一个成功方法来处理响应,如下所示:
$(document).ready(function () {
$.ajax({
type: "GET",
url: 'http://ip-api.com/json',
dataType: "json",
success: function(resp){
//resp.query
}
});
});