我正在开发一个PhoneGap应用程序与jQuery Mobile 1.3.1& jQuery
JavaScript Library v1.9.1.我有一个用户名和密码的登录表单.有一个JSON api可以发送和接收JSON数据来处理登录.
我使用以下JavaScript进行ajax登录.
- $('#submit').bind('click',function(e) {
- e.preventDefault();
- $.ajax({
- type : "POST",url : "http://domainx/public/login",xhrFields : {withCredentials: true},crossDomain: true,beforeSend : function() {$.mobile.showPageLoadingMsg();},complete : function() {$.mobile.hidePageLoadingMsg();},data : {username : 'subin',password : 'passwordx'},dataType : 'json',success : function(response) {
- console.error(JSON.stringify(response));
- },error : function() {
- console.error("error");
- }
- });
- });
- <div data-role="content">
- <form id="login-form" data-ajax="false" method="post">
- <fieldset>
- <input type="text" name="username" id="username" value="subin" placeholder="Username">
- <input type="password" name="password" id="password" value="passwordx" placeholder="Password">
- <input type="button" data-theme="b" name="submit" id="submit" value="Enter" data-icon="plus">
- </fieldset>
- </form>
- </div>
解决方法
你有几个错误是你的代码:
>将日期更改为数据
- data : {username : 'subin',
>删除此行,它将阻止Phonegap成功发布:
- xhrFields : {withCredentials: true},
>在你的beforeSend并完成使用这个功能来显示加载器:
- $.mobile.loading('show');
和
- $.mobile.loading('hide');
您当前的这些在jQuery 1.2中已被弃用.
您的最终代码应如下所示:
- $.ajax({
- type : "POST",url : "http://domain/public/login",beforeSend : function() {$.mobile.loading('show')},complete : function() {$.mobile.loading('hide')},success : function(response) {
- //console.error(JSON.stringify(response));
- alert('Works!');
- },error : function() {
- //console.error("error");
- alert('Now working!');
- }
- });
证明它正在工作,只是从磁盘运行,而不是从服务器,因为你会得到一个CROSS域错误:
- <!DOCTYPE html>
- <html>
- <head>
- <title>jQM Complex Demo</title>
- <Meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
- <Meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
- <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
- <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
- <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
- <script>
- $.ajax({
- type : "POST",success : function(response) {
- //console.error(JSON.stringify(response));
- alert('Works!');
- },error : function() {
- //console.error("error");
- alert('Not working!');
- }
- });
- </script>
- </head>
- <body>
- <div data-role="page" id="index">
- <div data-theme="b" data-role="header">
- <h1>Index page</h1>
- </div>
- <div data-role="content">
- </div>
- </div>
- </body>
- </html>