javascript - 从 Cordova 应用程序向 Google App Engine 提交 POST 请求根本未到达服务器

标签 javascript jquery python google-app-engine cordova

我有一个 Cordova 应用程序(HTML/Javascript 文件封装在 iOS WebView 中),它表现出一些奇怪的行为。

我将表单提交到 Google App Engine 上的 python 脚本,这有时有效,但并非总是有效。当表单包含 base64 编码图像时,它很可能不起作用。

我所说的不工作是指它根本无法到达服务器。服务器日志显示尚未向“/submit”处理程序发出任何请求。这仅适用于该应用程序的 iOS 版本。 Android 版本使用相同的代码可以正常工作。

我最大的怀疑是跨域问题。这是我发送表单的 jQuery 代码:

$.ajax({
    type: 'POST',
    url: "http://myapp.appspot.com/submit",
    data: submittedEntryString,
    crossDomain: true,
    cache: false
}).done(function(data) {
    console.log(data);
}).fail(function(jqXHR, textStatus, errorThrown) {
    console.log(textStatus);
    console.log(errorThrown);
    console.log(jqXHR.responseText);
});

但是我已将 header 添加到我的响应中。我认为这是正确的方法(?)

self.response.headers['Access-Control-Allow-Origin'] = '*'
self.write("form submitted! form id is: " + str(s.form_id))

有什么想法会导致这种行为吗?

最佳答案

仅当您将以下代码插入 config.xml 后,在 PC 浏览器上测试应用代码时,才会出现跨域问题。

<access origin="*" />

无论如何,你的代码似乎是正确的。 我的建议是您可以尝试以下步骤。

(1)不要发布您的图片并检查文本数据是否可以正常发布。

(2) 使用phonegap“Filetransfer”发布包含图像的数据。

关于javascript - 从 Cordova 应用程序向 Google App Engine 提交 POST 请求根本未到达服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27350110/

相关文章:

python - SVM 线性分类器 - 奇怪的行为

python - Collections.Counter 如何实现快速排序?

javascript - Notepad++ 只在替换中粘贴复制代码的第一行?

javascript - 在 Highchart 上将 X 轴显示为 DD/MM/YY HH :MM:SS. mm

javascript - 使用 AJAX 比较 Ruby 中的变量,然后相应地渲染 View

javascript - 将图像加载推迟到页面加载之后?

价格计算器的 jQuery 模块?

python - 尝试在固定长度的多行上打印单个字符串并最小化成本

javascript - AWS S3 ZIP 文件上传损坏存档文件

javascript - 为 React 属性分配初始值