使用AJAX获得带有JS的android应用程序的PHP结果
getting a PHP result to android app with JS using AJAX
我正试图使用jQuery在服务器上用PHP调用填充网格。我要么在网格上一无所获,要么收到一条错误消息。
Conexion JS:
$(document).ready(function(){
var output = $('#output');
$.ajax({
url: 'conexresumenu.php',
dataType: 'jsonp',
jsonp: 'jsoncallback',
timeout: 30000,
success: function(data, status){
$.each(data, function(i,item){
var landmark ='<div class="ui-block-a ui-bar-c" style="width:50px">'+item.id+'</div><div class="ui-block-b ui-bar-c" style="width:80px">'+item.username+'</div><div class="ui-block-c ui-bar-c" style="width:80px">'+item.join_date+'</div><div class="ui-block-d ui-bar-c" style="width:50px">'+item.is_active+'</div>';
output.append(landmark);
});
},
error: function(){
output.text('Hubo un error al cargar los datos');
}
});
});
现在HTML文件获取这个脚本:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Manager</title>
<link href="cssmain.css" rel="stylesheet" type="text/css"/>
<script src="jquery-1.5.min.js" type="text/javascript"></script>
<script src="jquery.mobile-1.0a3.min.js" type="text/javascript"></script>
<!-- Esta referencia a phonegap.js permitirá disponer de sugerencias para el código, siempre y cuando el sitio actual se haya configurado como aplicación móvil.
Para configurar el sitio como aplicación móvil, vaya a Sitio -> Aplicaciones móviles -> Configurar framework de aplicación... -->
<script src="/phonegap.js" type="text/javascript"></script>
<script src="js/resumenu.js"></script>
</head>
<body>
<div data-role="page" id="page">
<div data-role="header">
Users
</div>
<div data-role="content">
<h3> Usuarios </h3><div id='output' class=ui-grid-c>
<div class="ui-block-a ui-bar-c" style="width:50px">ID</div>
<div class="ui-block-b ui-bar-c" style="width:80px">Username</div>
<div class="ui-block-c ui-bar-c" style="width:80px">Alta</div>
<div class="ui-block-d ui-bar-c" style="width:50px">Status</div>
</div>
</div>
</body>
</html>
现在服务器上的PHP调用:
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);
$query = mysql_query("SELECT id, username, join_date, is_active FROM members", $con) or trigger_error(mysql_error());
//create an output array
$output = array();
//if the MySQL query returned any results
if (mysql_affected_rows() > 0) {
//iterate through the results of your query
while ($row = mysql_fetch_assoc($query)) {
//add the results of your query to the output variable
$output[] = $row;
}
//send your output to the browser encoded in the JSON format
echo json_encode(array('status' => 'success', 'items' => $output));
} else {
//if no records were found in the database then output an error message encoded in the JSON format
echo json_encode(array('status' => 'success', 'items' => $output));
}
您正在请求数据类型为jsonp
。这是错误的,因为您正在输出常规的json
。(jsonp
是封装在函数调用中的JSON)。
JSON:
{ my: [json], goes: "here"] }
JSONP:
jsonpCallback({ my: [json], goes: "here"] });
将dataType
更改为json
并移除jsonp
密钥。
编辑:您也错误地循环使用data
对象。您应该循环使用data.items
。
在Android的HTML5容器中运行JavaScript时。域是应用程序的域,而不是web服务器的域。
告诉web服务器允许对其他域进行JSON响应。将以下内容添加到PHP代码的顶部。
header('Access-Control-Allow-Origin: *');
只有当您在PhoneGap这样的容器中运行JavaScript时,这才是一个问题。在像Chrome这样的Android浏览器中运行不会成为问题。原因是PhoneGap更改了域,使其成为localhost。
我已经解决了这个问题。谢谢大家。真正的问题是服务器端的响应。不太好。
<?php
header('Content-type: application/json');
$server = "localhost";
$username = "user";
$password = "pass";
$database = "db";
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);
$query = mysql_query("SELECT id, username, join_date, is_active FROM members", $con) or trigger_error(mysql_error());
//create an output array
$records = array();
while($row = mysql_fetch_assoc($query)) {
$records[] = $row;
}
mysql_close($con);
echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';
?>
我所做的一切都是正确的。工作良好。谢谢大家。
相关文章:
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 在cordova android应用程序中连接数据库
- 使用javascript将视频从我的android应用程序上传到youtube
- 我需要学习Java才能使用phoneGap创建android应用程序吗
- javascript onclick不适用于android应用程序
- 带有Apache Cordova的Android应用程序
- Phonegap 3.2.0 android应用程序后退按钮剪切仅适用于某些页面
- 如何在android应用程序中下载图像
- 从网页打开android应用程序
- 点击按钮在手机中加载现有的Android应用程序
- Android应用程序在接收intent捆绑包时崩溃
- 读取phonegap android应用程序中的本地文件
- 如何使我的phonegap android应用程序崩溃
- Pebble Watchface向Android应用程序发送消息
- 让Laravel应用程序同时服务于基于浏览器的应用程序,并充当iPhone和Android应用程序的API的最佳实践是什
- 适用于 Android 应用程序的 Java 代码中的实例化异常
- 为什么我在尝试使用 StageWebView 在 AIR Android 应用程序中实现 Google Maps Jav
- 单击从Android应用程序到HTML页面的单选按钮
- 运行代码以在Android应用程序中单击javascript按钮?尝试在页面上抓取回复按钮联系信息 craigslist
- 如何在 AIR Android 应用程序中在 JS 和 AS3 之间进行通信