跨域AJAX POST请求在Web浏览器(包括手机上的浏览器)上可以很好地工作,但不适用于使用以下工具构建的本机应用程序 Phonegap
Phonegap
我创建了一个登录表单,用户必须输入他们的登录凭据,然后由heroku上托管的服务器对其进行验证,{"success":true}如果输入了有效的凭据,则返回json 。
{"success":true}
我的Ajax脚本:
$.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", contentType: "application/x-www-form-urlencoded; charset=utf-8", dataType: "json", data: {identity: <username from form>, password: <password from form>}, crossDomain: true, cache: false, success: function(data) { obj = JSON.parse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } });
解决此问题所采取的步骤:
<access origin="http://domain.com/public/auth/app-login" />
<access origin="*" />
$.support.cors = true; 要么 jQuery.support.cors = true;
$.support.cors = true;
jQuery.support.cors = true;
cache: false
任何帮助表示赞赏。
好。如果index.html位于本地,则可以调用ajax任何主机,而无需在客户端或服务器中启用CORS。您删除:
$.support.cors = true; OR jQuery.support.cors = true;
和:
它多余,只能使用:
您需要检查并添加AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
如果您的应用需要添加更多权限。最后,在$(document).ready()内部调用ajax:
$.ajax({ type: "POST", url: "http://domain.com/public/auth/app-login", dataType: "json", data: {identity: <username from form>, password: <password from form>}, success: function(data) { obj = JSON.parse(data); if (obj && obj.success === true) { window.location.href = 'home.html'; } }, error: function(e) { alert('Error: ' + e.message); } });