jQuery json/jsonp 不获取 php 服务器上的项目
Posted
技术标签:
【中文标题】jQuery json/jsonp 不获取 php 服务器上的项目【英文标题】:jQuery json/jsonp does not fetch items on php server 【发布时间】:2014-08-29 18:52:28 【问题描述】:我有一个用 php 编写的 Web 服务,但我无法使用 jquery getJSON()
获取数据。
这是我的网络服务,工作正常。
<?php
include 'config.php';
$sql = "select s.id, s.title, s.content, s.date, s.confirm " .
"from sap s";
try
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->query($sql);
$sapList = $stmt->fetchAll(PDO::FETCH_OBJ);
$dbh = null;
header('Content-Type: application/json; charset=UTF8');
$data = array('items'=>$sapList);
echo json_encode($data,JSON_UNESCAPED_UNICODE);
//echo '"items":'. json_encode($sapList,JSON_UNESCAPED_UNICODE) .'';
catch(PDOException $e)
echo '"error":"text":'. $e->getMessage() .'';
?>
我正在尝试开发一个 jQuery 移动应用程序。源代码:event.js 我在 event.js 中用于循环。因为我想从中提取数据多个独立的服务。
var db=openDatabase('servicesDB','1.0','servcesdatabase', 2*1024*1024);
tablo();
var olaylar;
$('#eventListPage').bind('pageinit', function(event)
console.log("geteventlist fonksiyon running");
getEventList();
);
function getEventList()
db.transaction(function (tx)
tx.executeSql('SELECT * FROM services',[],function (tx,sonuc)
var toplam=sonuc.rows.length;
var kayit="";
var id="";
var ad="";
var url="";
$('#olaylar li').remove();
for (var i=0;i < toplam; i++)
kayit=sonuc.rows.item(i);
id=kayit.id;
ad=kayit.ad;
url=kayit.url;
$.getJSON(url+'?callback=?', function(data)
olaylar = data.items;
$.each(olaylar, function(index, olay)
/*var confirm="";
switch(olay.confirm)
case 0:
confirm="accept";
break;
case 1:
confirm="wait";
break;
case 2:
confirm="reject";
break;
*/
$('#olaylar').append(
'<li><a href="eventDetails.html?id=' + olay.id + '">' +
'<img src="pics/mr.jpg"/>' +
'<h4>' + olay.title + '</h4>' +
'<p>' + olay.confirm + '</p>' +
'</a></li>');
);
$('#olaylar').listview('refresh');
alert("getjsondan cikti");
);
, hata);
);
function tablo()
db.transaction(function (tx)
tx.executeSql('CREATE TABLE IF NOT EXISTS services('
+'id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'
+'ad VARCHAR(25) NOT NULL, url VARCHAR(100) NOT NULL)');
);
function hata(transaction, err)
alert("Hata oldu : "+err.message);
return false;
index.html
<!DOCTYPE HTML>
<html>
<head>
<title>Personel Listesi</title>
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="stylesheet" href="css/styles.css" />
<link rel="stylesheet" href="css/jquery.mobile-1.4.3.css" />
<link rel="stylesheet" href="css/jquery.mobile-1.4.3.min.css" />
</head>
<body>
<div id="eventListPage" data-role="page">
<div data-role="header" data-position="fixed">
<h1>Event List</h1>
</div>
<div data-role="content">
<ul id="olaylar" data-role="listview" data-filter="true"></ul>
</div>
</div>
<script src="js/jquery-2.1.1.min.js"></script>
<script src="js/jquery.mobile-1.4.3.min.js"></script>
<script src="js/events.js"></script>
<script src="js/eventDetails.js"></script>
</body>
</html>
我试过$.getJSON(...) alert("in getjson");
但这不起作用。这个alert.getjson
函数不起作用。但之前效果很好,现在getjson
函数返回空白,好像没有检索到任何数据。我需要你的帮助,谢谢!
【问题讨论】:
【参考方案1】:我对@987654322@ 毫无疑问。我不确定上面的代码框架是否正确。
更好的方法是在 PHP 关联数组本身中创建 JSON 结构,然后按如下方式生成 JSON,
<?php
// Some code
$data = array('item'=>$sapList);
echo json_encode($sapList);
?>
注意:由于我没有测试我的代码并且它是 GET 请求,您可以通过直接在浏览器地址栏中输入 URL 来测试您的代码。并在 chrome 的控制台中复制并粘贴打印的代码,并在 javascript 中验证它们。
或
使用在线 JSON 验证器,例如 http://jsonlint.com/
【讨论】:
感谢回复。但是我一直在php中使用这个web服务模板。从来没有任何冲突。无论如何我会尝试。你对JavaScript有一些疑问吗? chrome 的控制台出现错误。"Uncaught SyntaxError: Unexpected token : getsaplist.php:1 " getsaplist.php has above.I did as you said 我试过 jsonlint.com 并且我的 json 是有效的。没有问题。但在我的 jquery 上不起作用...以上是关于jQuery json/jsonp 不获取 php 服务器上的项目的主要内容,如果未能解决你的问题,请参考以下文章
JSON???JSONP ??????jQuery????????????share???
如何使用 XAMPP 本地服务器获取 JSON / JSONP 数据?