进行Ajax调用并处理响应

时间:2014-07-24 21:18:35

标签: jquery ajax

我使用免费的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也可以作为一个简单的字符串传递?有关最佳实践的任何提示表示赞感谢。

2 个答案:

答案 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
        }
    });
});

Working jsfiddle