jQuery AJAX POST不适用于Phonegap Build

时间:2013-03-05 14:43:23

标签: jquery ajax cordova post build

我在使用Phonegap Build在Android应用程序中执行jQuery AJAX POST时遇到问题。我添加了:

  1. Config.xml:设置访问源*
  2. 所有HTML文件:set $ .support.cors = true; $ .mobile.allowCrossDomainPages = true;
  3. 在远程服务器上:设置Access-Control-Allow-Origin,Access-Control-Allow-Headers的值
  4. 对于这个答案,我看起来很高很低。我已经经历了几个帖子,提供了相互矛盾的信息,我已经尝试了很多提到的解决方案,但没有一个有效。

    这是我试图做的事情:

    $.ajax({
      type: "POST",
      url: "http://mydomain.com/mypage.aspx/myweb...",
      data: "{'sEnquiryText':'" + $("#textareaEnq")[0].value + "'}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(data) { // Response function
        if (data.d == "Success")
          $("#lblInfoMsg").html("Enquiry sent successfully !");
        else
          $("#lblInfoMsg").html(data.d);
      }
    });
    

    当安装在不同的域(myseconddomain.com/mywebapp)以及本地IIS(localhost / mywebapp)上时,这可以很好地用作Web应用程序。但它不适用于使用Phonegap Build制作的Android应用程序。

    如果有人可以讨论这个问题,我将不胜感激。

2 个答案:

答案 0 :(得分:6)

您需要添加“res / xml / config.xml”,例如

<access origin="http://127.0.0.1*"/> <!-- allow local pages -->

<access origin="https://example.com" />

<access origin="https://example.com" subdomains="true" />

<access origin=".*"/>

答案 1 :(得分:2)

我在几个小时后得出结论的答案是Android WebView中不支持XHReq POST,至少在我正在使用的Android 4.03设备上的PhoneGap默认设置中; tcpdump显示请求确实来自设备,对于正确的主机和路径,但作为GET,没有发布数据。我检查了白名单(phonegap默认当前为“*”,所以不是问题),确保这不是“POST缓存”问题(通过在请求URL中添加?t =),并确保我只做了异步请求。相同的结果; POST以GET形式出现,所有帖子数据都将丢失。

我的解决方案是切换到使用GET来实现此功能,以避免需要通过“http://mydomain.com/endpoint?post-data=url-encoded-data-here&t=timestamp-here”等网址发送帖子数据。这是有可能的,因为我也可以控制它的服务器端,如果以这种方式内联数据,则更改端点以允许以前仅通过GET进行POST操作。

更新:我回到这个问题,因为我真的希望POST因其他原因而工作(见帖子#21192670)。

原因 POST失败的原因是因为我的域名的MX配置,以及引用它时选择(或缺少)子域名;我在POST网址中使用了根域,但MX记录指向了wwww.mydomain.com,然后指向了正确的IP地址。 POST没有完成重定向。