2015-01-01 46 views
0

我正在制作一个使用英特尔XDK for Android设备的移动应用程序,我一直在使用模拟器和我的本地开发服务器(127.0.0.1)来测试我的PHP代码。我一直在使用以下方式联系我的服务器:$.ajax(),$.post()$.get()。然后我决定,我已经达到了应该构建应用程序APK文件的适当位置,将PHP源码推送到在线网站并通过适当的移动设备进行测试。所以我做了,我通过从PMA中导出当前数据来创建数据库,然后在所有请求中更改所有URL以指向正确的位置,并将我的PHP源文件推送到FTP。然后我测试了我的应用程序,结果令我非常震惊。对移动应用程序不起作用的jQuery请求

错误#1

PHP Fatal error: Can't use function return value in write context in /home/scrifalr/public_html/sm/api/v1/modules/register/register.php on line 9

我做了什么来解决

我检查了源和转换后显然这!empty(trim($_POST['username']))empty($_POST['username'])似乎解决这个错误。

所以问题一个。为什么这个错误没有显示在我的本地服务器上,那么不告诉我,我不能这样做?

错误#2

我有一个登录/注册,它发送所有的作品,我改变了上面的PHP和他们开始工作的请求。但是我有一个注销页这似乎并没有工作,代码如下所示:

logout.html

<!DOCTYPE html> 
<html> 

<head> 
    <link type="text/css" rel="stylesheet" href="css/styles.css"> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> 
    <script src="http://code.jquery.com/jquery-latest.min.js"></script> 
    <script src="intelxdk.js"></script> 
    <script src="cordova.js"></script> 
    <script src="xhr.js"></script> 
    <script src="js/libs/app.js"></script> 
    <script src="js/libs/functions.js"></script> 
    <script src="js/logout.js"></script> 
    <title>Logout</title> 
</head> 

<body> 

</body> 

</html> 

正如你所看到的,它没有任何关系除了包括。下面的文件是JavaScript文件:

logout.js

window.onload = function() { 
    getSessionData(); 
    $.post(
     "http://sm.script47.net/api/v1/modules/logout/logout.php", { 
      "userID": window.userID 
     }, function (data) { 
      alert(data); 
      if (data == 1) { 
       document.location.href = "index.html"; 
      } else { 
       showTimedMessage(data, "error", 4000); 
      } 
     } 
    ); 
}; 

正如你所看到的,它包含了发布请求和一个名为getSessionData()功能,所以以后有什么好像试图调试我的年龄得出的结论是getSessionData()这是失败的,这再次显得很奇怪,因为它在模拟器中工作,并且所有到达请求文件的路径都是正确的。只是对于那些希望看到该函数谁:

window.token = null; 
window.userID = null; 
window.username = null; 
window.emailAddress = null; 
window.IP = null; 

function getSessionData() { 
    $.ajax({ 
     url: 'http://sm.script47.net/api/v1/modules/sessionData/sessionData.php', 
     "type": "GET", 
     dataType: "json", 
     async: false // This comment is not in the code, I know I shouldn't have this I'm using it for now and it works with it like this. 
    }).done(function (data) { 
     window.token = data.token; 
     window.userID = data.userID; 
     window.username = data.username; 
     window.emailAddress = data.emailAddress; 
    }); 
} 

所以问题二的是,即使是在我彻底的测试,并确保所有的路径是正确的,并上传完全相同的代码怎么来的,为什么有些请求被发送,例如登录,注册其他人(注销)不工作?

+0

因为你不了解每种程序语言的基本概念。如果你想变得更好,这些是你需要听到的话。如果我没有被禁止进入stackoverflow,我将永远不会学到太多的代码。编辑 – r3wt

+1

来解释为什么发布这样的“粗鲁”答案。我会给你一个提示。您需要专门查看jquery'$ .ajax' api。你可以为错误设置一个回调函数,并确定错误是什么,如果它来自php。如果不是从PHP,你可以看看控制台,如果它来自JavaScript。 – r3wt

+0

@ r3wt同意了,我不像前端编码那样经验丰富,但我试过了吗?我知道我已经熄灭了所有其他的可能性后,我只转向了StackOverFlow。代码工作正常,这肯定意味着我对概念有了一些理解。然而,它在从仿真器到移动设备的转变中突破了。这就是为什么我转向使用StackOverFlow来帮助我理解它为什么会崩溃的原因,这也将有助于我将来的参考。所以不,我不同意你的陈述,也许如果人们教我我出错的地方,我会学到更多,不是吗? – Script47

回答

0

经过一些调试后发现AJAX调用失败,因为不允许同步AJAX调用。