javascript - PhoneGap 应用程序的 XMLHttpRequest POST 数据丢失

标签 javascript android post cordova

我正在将一个 ajaxed、移动优化的网站移植到 PhoneGap,但未能成功地将任何 POST 发送到服务器。据我所知,xhreq POSTS 应该可以在 PhoneGap 中实现。

具体信息:我的目标 Android 平台使用最新的 Cordova 3.3.1-0.1.2、最新的 Android SDK 以及由 Verizon 更新到 Android 4.3 的 Galaxy S3。通过 wifi 连接到我的本地服务器。在每次尝试中,POST 都会以 GET 的形式到达服务器,没有发布数据(使用 tcpdump 检查数据包进行验证)。针对移动设备优化的网站在同一部手机上的浏览器中运行良好,也可以通过 WiFi 运行。

我通过创建一个全新的 Phonegap 项目来隔离失败案例,无非是:

$ cordova create Hello
$ cd Hello
$ cordova platform add android

然后在 index.js 中,在 onDeviceReady 处理程序的末尾,添加我首先在简单浏览器页面中测试的代码 fragment (此处替换为域):

// TEST POST CAPABILITY
var req = new XMLHttpRequest();
req.onreadystatechange = function() {
  if (req.readyState==4 && (req.status==200 || req.status==0)) {
    console.log("POST Response: " + req.responseText);
  }
};
var t = new Date().getTime();  // Just to foil any caching
req.open("POST", "http://mydomain.com/services/rpc?t=" + t, true);  // async
req.setRequestHeader('Content-type','application/text; charset=utf-8');
var postContent = JSON.stringify({id:t, method:"misc.log", params:[{log:"POST Test"}]});
req.send(postContent);

然后在手机上运行:

$ cordova run android

它像更完整的应用程序一样失败,以 GET 方式到达服务器,没有发布数据。我验证了几个配置项默认值,以确保它们符合要求:

在 config.xml 中:

<access origin="*" />

在 AndroidManifest.xml 中:

<uses-permission android:name="android.permission.INTERNET" />

对于可能出现的问题或其他需要调查的事情有什么想法吗?

谢谢。

最佳答案

您的内容类型应设置为

“application/json”

JSON.stringify() 创建 JSON 内容。

接下来,您能告诉我们您的服务器进程如何确定请求类型吗?能贴一下相关代码吗?

我将从调整内容类型值开始。看看这是否会产生影响。

希望有帮助。

关于javascript - PhoneGap 应用程序的 XMLHttpRequest POST 数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21192670/

相关文章:

javascript - 辅助功能 - 提醒用户按钮内的动态文本更改

java - mediaPlayer CompletionListener 在完成歌曲之前播放下一首歌曲

php - 为什么 $_POST 变量在 PHP 中被转义?

php - 如何将数据POST到数据表中

android - 从 Android 向 MySQL/PHP 服务器发送安全 POST 请求

javascript - 自定义延迟加载 - IE9 内存泄漏

javascript - 如何创建 Howerjs 进度条?

android - Eclipse Android 插件 -- libncurses.so.5

java - 线程进度条 fragment

javascript - GetElementsByTagName 不适用于 XML