【问题标题】:Why won't my ajax get json data request work?为什么我的 ajax 无法获取 json 数据请求?
【发布时间】:2013-05-30 16:17:00
【问题描述】:

我正在用 phonegap 和 jquery mobile 编写一个移动应用程序。我正在尝试使用此请求从服务器获取数据,但该请求不起作用:

$.ajax({
        url : "https://localhost:8000/weatherData.json",
        type: "GET",
        dataType : "json",
        success: function(){

          $("#placeHold").text("hi");
          },

        error: function() {
          $("#placeHold").text("error");
          }

          });
 });

所以我相信我已经解决了我所有的语法错误,而且我不认为这是一个跨域问题,因为我在本地主机上并且我已经修复了该错误。 URL 只是 JSON 数据,它位于浏览器中的正确位置。 placeHold 有效,我的文档中出现了单词错误。我只是不明白为什么数据不会加载。在 chromes 开发工具中我没有收到错误,它只是说失败变红并显示:

GET 'link'  jquery-1.8.2.min.js:2
send                                         jquery-1.8.2.min.js:2
p.extend.ajax                                jquery-1.8.2.min.js:2
(anonymous function)                         firstpage.html:184
k                                            jquery-1.8.2.min.js:2
l.fireWith                                   jquery-1.8.2.min.js:2
p.extend.ready                               jquery-1.8.2.min.js:2
D                                            jquery-1.8.2.min.js:2

【问题讨论】:

  • 同源也适用于端口?
  • @adeneo 这可能是真的,我曾经尝试通过将带有enctype="multipart/form-data" 的表单发送到 SMTP 服务器来发送电子邮件(不要问为什么),但是我尝试过的所有浏览器(包括 IE)阻止了请求,因为它使用了非标准端口。
  • 准确地说:Error 312 (net::ERR_UNSAFE_PORT): unknown error。我只是把它翻译成英文,所以确切的措辞可能会有所不同(只有第一个和最后两个词是荷兰语,所以我对此表示怀疑,但你知道的)。
  • “协议、域和端口必须匹配”是 Chrome 中遇到此问题时的常见错误消息
  • 你的 json 是有效的吗?

标签: jquery ajax json mobile get


【解决方案1】:

你试过吗?您应该告诉 PhoneGap 允许跨域请求。

$( document ).bind( "mobileinit", function() {
    // Make your jQuery Mobile framework configuration changes here!

    $.mobile.allowCrossDomainPages = true;
});

http://jquerymobile.com/demos/1.0/docs/pages/phonegap.html

【讨论】:

    【解决方案2】:

    也许尝试将参数传递给您的成功或错误函数(如成功:函数(数据))

    我用这个读取了一个 json 文件

    $.ajax({
        dataType: "json",
        url: "../../js/languages/languages.json",
        async: isAsynchronous,
        success: function(data) {
            languageFile = data;
            }
    

    我用这个读取了一个 xml

    $.ajax({
        dataType: "xml",
        url: "../../config.xml",
        async: false,
        success: function(xml)
        {
            appVersion = $(xml).find("appVersion").text();
        }
    });
    

    【讨论】:

      【解决方案3】:

      您是否尝试过使用jsonp 或这个:https://github.com/jaubourg/jquery-jsonp

      您也可以查看jQuery JSONP Tips and Tricks

      【讨论】:

        猜你喜欢
        • 2015-08-28
        • 1970-01-01
        • 1970-01-01
        • 2019-03-13
        • 2013-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-15
        相关资源
        最近更新 更多