我有一个基于PHP瘦客户端的API,并希望为我的网站生成JSONP。当我致电网站:'http://api.mysite.com/users?callback=JSON_CALLBACK'。它返回一个带有JSON CALLBACK()的空白页面。登录到控制台时,它是未定义的。var_dump返回一个值,但JSONP不是
API的index.php文件
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim();
$app->contentType('application/json');
$app->get('/users', 'getUsers');
$app->run();
function getConnection() {
$dbhost="localhost";
$dbuser="";
$dbpass="";
$dbname="";
$dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbh;
}
function getUsers() {
$sql = "select * FROM manga";
try {
$db = getConnection();
$stmt = $db->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo $_GET['callback'] . '('.json_encode($users).')';
}
catch(PDOException $e) {
echo $_GET['callback'] . '('.json_encode($e->getMessage()).')';
}
}
的var_dump($用户),通话http://api.mysite.com/users和结果是:
function getUsers() {
$sql = "select * FROM manga";
$db = getConnection();
$stmt = $db->query($sql);
$users = $stmt->fetchAll(PDO::FETCH_OBJ);
var_dump($users);
}
结果:
array(2) {
[0]=>
object(stdClass)#35 (10) {
["id"]=>
string(1) "1"
["ad"]=>
string(6) "Naruto"
["yazar"]=>
string(17) "Masashi KISHIMOTO"
["icerik"]=>
string(28) "Ninja, Dövü?, Aksiyon, Drama"
["tarih"]=>
string(4) "1999"
["tur"]=>
string(5) "Manga"
["durum"]=>
string(9) "Sona Erdi"
["konu"]=>
string(560) "Yondaime Hokage, gizli bir ninja kasabas? olan Konohagakure'ye sald?ran cehennemin iblislerinden Kyuubi'yi durdurmak için, Onu yeni do?mu? bir çocuk olan Naruto'nun içine mühürler. Böylece kahram?n?m?z Naruto ortaya ç?km?? olur. ?çine mühürlenen korkunç iblis sebebiyle kasaba halk?n?n nefretini kazanan Naruto daha bebekken yetim kalm?? biridir. Kasaba halk?n?nda kendini d??lamas?ylada oldukça yaramaz ve haylaz biri çocuk olur. Fakat ninja akademisinden mezun olaca?? gün, hayat?nda ilk defa olarak arkada? edinmesi Naruto'nun hayat?n? bütünüyle de?i?tirir."
["kapak"]=>
string(10) "naruto.jpg"
["son"]=>
string(3) "300"
}
[1]=>
object(stdClass)#36 (10) {
["id"]=>
string(1) "2"
["ad"]=>
string(9) "One Piece"
["yazar"]=>
string(12) "Eiichiro ODA"
["icerik"]=>
string(32) "Macera, Komedi, Dövü?, Fantastik"
["tarih"]=>
string(4) "1997"
["tur"]=>
string(5) "Manga"
["durum"]=>
string(12) "Devam Ediyor"
["konu"]=>
string(881) "Korsan Kral Gold Roger, bu dünyadaki her?eyi elde eder ve idam edilirken, tüm servetinin Grand Line'da oldu?unu, onu aray?p bulmalar? gerekti?ini söyler. Bu olaydan sonra herkes Grand Line'a gider. Ancak Grand Line'a girmek çok zor, Grand Line'da canl? kalabilmek imkans?zd?r.
Kahraman?m?z Monkey D. Luffy'nin rüyas?, Korsan Kral olmak ve One Piece denen kimsenin bilmedi?i, görmedi?i hazineyi ele geçirmektir. Küçük ya?lardan beri hep korsan olmak isteyen Luffy, kazara bir ?eytan meyvas? (Akuma No Mi) yemi?tir. 3 farkl? ?eytan meyvas? vard?r ve bu meyvalar yiyenlere çok üstün güçler sa?lamaktad?r ancak bu güçlerin bedeli asla yüzememektir. Luffy'nin yedi?i meyva onu bir lastik çocu?a çevirir. Bu olaydan y?llar sonra Luffy denize aç?l?r. Yolculu?u s?ras?nda ekibini toplayacak ve One Piece'i bulmak için Grand Line'da birbirinden tehlikeli ve komik maceralara at?lacakt?r."
["kapak"]=>
string(13) "one_piece.jpg"
["son"]=>
string(3) "788"
}
}
检查你的json的有效性:看看@“Madan Sapkota”的答案[这里](http://stackoverflow.com/questions/6041741/fastest-way-to-check-if-a-string -is-json-in-php) – 0yeoj
@Paul Crovella,0yeoj问题在我的数据库表中。表格中包含土耳其字符的数据。我不明白土耳其的字符在UTF-8? – Nasuh