我有一个 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/