【问题标题】:JQuery .get() to call http handler - doesn't return expected resultJQuery .get() 调用 http 处理程序 - 不返回预期结果
【发布时间】:2013-11-20 03:14:48
【问题描述】:

我最初让下面名为“g.initWithUserGeolocation”的函数成功运行。这是一个 JQuery .get(),它调用一个应该返回 JSON 对象的 http 处理程序,然后将该对象的纬度和经度属性分配给其他几个属性

var GMAPS = function (mapHeight, serviceMethodName) {

var g = {}

//center location
g.currentLat = 0;
g.currentLng = 0;


g.initWithUserGeolocation = function () {

    var url = "http://www.lesmills.dev/sites/main/classlocator/handler/UserLocation.ashx";
    $.get(url, {}, function (data) {
        g.currentLat = data.Latitude;
        g.currentLng = data.Longitude;
    });

    setTimeout(function () { map.init(); }, 1000);
}

g.init = function () {

    var self = this;

    //Check if coordinates have been set
    if (this.currentLat == 0 || this.currentLng == 0) {
        this.initWithUserGeolocation();
        //setTimeout(function () { map.init(); }, 1000);
    }

当我使用 Visual Studio 调试 http 处理程序时,它被 JQuery .get() 调用,它成功地根据用户的 IP 获取用户的位置,并将封装此信息的 JSON 写入响应,像这样:

        context.Response.ContentType = "application/json";

        var user = new CurrentUser();
        user.Location = MyService.GetLocation(ipAddress));

        var result = Util.ToJson(user.Location);

        context.Response.Write(result);

返回的这个对象包含用户所在位置的正确经度和纬度。但是,使用Firebug,当我在上面的JQuery .get()的'success'回调函数中放一个断点,就行了

g.currentLat = data.Latitude;

,断点没有命中,好像.get()没有成功。稍后在 g.init 函数中,this.currentLat 和 this.currentLng 都为零。

正如我所说,这以前是有效的。代码没有改变。然而,以前,JQuery 代码和处理程序代码基于部署到主机名为 www.lesmills.dev 的站点的同一个 Visual Studio 项目,并且使用相对 url 从 JQuery .get() 调用处理程序。现在,我已将 JQuery 代码移动到主机名为 m.lesmills.dev 的站点中,并且正在使用指向其在 www.lesmills.dev 网站中原始位置的绝对 URL 调用处理程序。为什么 JQuery 代码没有从 http 处理程序接收到正确的坐标?

【问题讨论】:

标签: jquery asp.net httphandler


【解决方案1】:

当我查看 Firebug 的“NET”选项卡并查看对 ashx 处理程序的请求时,我看到 GET 成功(响应代码 200),但是“NET”选项卡中显示的“响应”是空白的。所以基本上我可以请求不同的子域,但是响应不会返回给我。当我将处理程序移动到同一个子域时,我得到了一个成功的 JSON 响应。以下问题(由 MikeSmithDev 指出)详细介绍了 JQuery .get() 的跨域(包括跨子域)限制,它本质上是一个 AJAX/JSON 请求。

Is there any way to load json from a subdomain?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多