【问题标题】:jQuery ajax json request not working over mobile networkjQuery ajax json 请求无法在移动网络上运行
【发布时间】:2012-08-03 14:03:59
【问题描述】:

这几天我一直在摸不着头脑。

我使用普通的旧 html 和 jquery 编写了一个特定于移动设备的网站。

它使用带有 json 响应的 ajax 从使用服务堆栈编写的服务中获取数据。

在桌面和我尝试过的许多不同的移动设备(android、iphone、bb 等)上都可以正常工作

但是我的手机似乎有一个特定问题(沃达丰上的三星 Galaxy S2)

当手机在 wifi 上时,ajax 可以正常工作,并且从服务接收到 json 对象并正确处理。

但是,在移动数据上,响应不会以 json 形式返回,而是以服务堆栈网页的形式返回(看起来它没有被告知正确返回 json)

我想知道标题是否会被沃达丰或其他公司剥离?

这是正在使用的 ajax 调用

$.ajax({
            url: sgee.ApiUrl + "/api/GetRegionId/" + sgee.App.postcode,
            type: 'GET',
            dataTye: 'json',
            contentType: "application/json;charset=utf-8",
            cache: false,
            success: function (data) {
                if (data.success) {
                    sgee.App.EnquiryId = data.enquiryId;
                    sgee.App.RegionId = data.regionId;
                    sgee.App.RegionName = data.regionName;
                    $("#regionTxt").html("We have identified that you live in the " + sgee.App.RegionName + " supply region.");
                    sgee.EndLoading(250);
                    sgee.HideStep(2);
                } else {
                    sgee.SetValidationError("#pcodeControl", "Please enter a valid UK postcode");
                }

            },
            error: function () {
                sgee.SetValidationError("#pcodeControl", "Please enter a valid UK postcode");
                sgee.SendError("Error on /api/GetRegionId/", "sgee.Step1");
            },
            complete: function () {

            }
        });

这是预期的数据

{"postCode":"s63","regionId":14,"regionName":"YORKSHIRE","enquiryId":578106,"success":true,"returnedId":0}

当在移动设备上运行时,这是我收到的(不包括整个,因为它很长,但它只是 html 响应,好像我没有设置响应类型或浏览到页面)

<!doctype html>
<html lang="en-us">
<head>
<title>GetRegionId Snapshot of 03/08/2012 13:59:50</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

这真的让我发疯了,因为无法调试(至少我找不到方法)移动网络。

【问题讨论】:

  • 从移动数据调用时Accept HTTP 标头是什么?
  • 捕获服务器接收到的实际请求(使用wireshark或类似工具)。发布请求。我很好奇为什么您的服务器返回一个 HTML 页面。也许请求有很大的不同。
  • 你有没有想过这个问题?我有来自不同网络提供商的测试人员的报告,而不是我告诉我类似的问题。我怀疑网络提供商的代理服务器做了他们不应该做的事情(这些代理与您不能在移动网络上使用 websockets 的原因相同)。

标签: android json jquery mobile servicestack


【解决方案1】:

只是猜测...但是您期望 json 内容对吗?如果是这样,为什么您的响应是“text/html”而不是“application/json”?

【讨论】:

  • 问题不在于它不能完全停止。但这就是为什么它仅在连接到移动数据时才在我的手机上专门工作,但在连接到 wifi 时却可以正常工作。
  • 我的猜测是移动数据网络上的某些东西(无论是在手机本身上还是在网络上的传输中 - 即使用沃达丰)正在沿线某处更改请求并且服务器没有被告知不再以 json 响应。但是在不同的手机和网络上它工作正常......
  • 这可能很奇怪......这意味着您的请求在到达您发送请求本身的服务器之前已被“某事”更改。请问,你能发布请求吗?
  • 没有,从来没有走到尽头。现在换了公司,所以没有机会再回去了……虽然是个很奇怪的人。如果你真的完成了,请告诉我。
【解决方案2】:

你有一个错字......“dataTye:'json',”。会是这样吗?

【讨论】:

    【解决方案3】:

    我认为是由于表单提交的类型。使用 post 而不是 get...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-30
      • 2015-04-07
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 2017-01-29
      相关资源
      最近更新 更多