#php #javascript #json #jquery-mobile #cordova
#php #javascript #json #jquery-мобильный #кордова
Вопрос:
В принципе, у меня есть php-скрипт, расположенный на сервере, который генерирует файл JSON со списком мест из базы данных mysql. Используя jQuery Mobile, я разрабатываю приложение для отображения этих мест. Мой код работает в Chrome и Safari, однако, когда я переношу его на Phonegap, он не работает. Я искал по всему Интернету, но не могу найти ответ:(.
Php-файл для генерации JSON (json.php ):
<?php
header('Content-type: application/json');
$server = "localhost";
$username = "xxx";
$password = "xxx";
$database = "xxx";
$con = mysql_connect($server, $username, $password) or die ("Could not connect: " . mysql_error());
mysql_select_db($database, $con);
$sql = "SELECT * FROM places ORDER BY name ASC";
$result = mysql_query($sql) or die ("Query error: " . mysql_error());
$records = array();
while($row = mysql_fetch_assoc($result)) {
$records[] = $row;
}
mysql_close($con);
echo $_GET['jsoncallback'] . '(' . json_encode($records) . ');';
?>
Мой файл Javascript, расположенный в моем приложении (загружает JSON и отображает его):
$('#places').bind('pageinit', function(event) {
getPlaces();
});
function getPlaces() {
var output = $('#placeList');
$.ajax({
url: 'http://www.mysite.com/json.php',
dataType: 'jsonp',
jsonp: 'jsoncallback',
timeout: 5000,
success: function(data, status){
$.each(data, function(i,item){
var place = '<li><a href="">' item.name '<span class="ui-li-count">'
item.checkins '</span></a></li>';
output.append(place);
});
$('#placeList').listview('refresh');
},
error: function(){
output.text('There was an error loading the data.');
}
});
}
HTML выглядит так:
<div data-role="content">
<h3>Places</h3>
<ul data-role="listview" id="placeList" data-inset="true">
</ul>
</div><!-- /content -->
Этот код работает в Chrome и Safari, однако при запуске в симуляторе xCode с Phonegap он не загружает JSON.
Любая помощь будет высоко оценена 🙂
Ответ №1:
Я не думаю, что проблема имеет какое-либо отношение к коду сервера (PHP), если только вы не создаете недопустимый JSON. Вопрос должен быть помечен JavaScript, а не PHP. В любом случае, есть отличная статья, описывающая очень похожий тип приложения. Он даже включает пример кода. Посмотрите:
Ответ №2:
Чувак, это скрипт на стороне сервера, он не будет запускаться, если он не размещен на сервере с внедренными этими языками. Я столкнулся с аналогичной проблемой. Одним из предложений было внедрить AJAX для извлечения данных с сайта php и возврата данных. Я смотрю, чтобы просто переслать всю страницу через окно веб-просмотра Safari (которое вы должны установить в разрешениях phonegap). Проблема в том, что я получаю весь Safari chrome сверху и снизу, пытаясь выяснить, как это обрезать, чтобы мне не приходилось перекодировать с помощью AJAX для извлечения данных на стороне сервера PHP.
Комментарии:
1. Внешний вид JQuerry как библиотеки может быть полезен. Но если вы поместите файл .php в проект PhoneGap в Xcode, он не будет запущен.. Потому что, как я уже сказал, это скрипт на стороне сервера… Но, используя javascript для реализации JQuerry, я не совсем уверен, что это может позволить вам сделать.
2. Я предполагаю, что, глядя на код, файл php запускается на сервере.