【问题标题】:jQuery json/jsonp does not fetch items on php serverjQuery json/jsonp 不获取 php 服务器上的项目
【发布时间】: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 函数返回空白,好像没有检索到任何数据。我需要你的帮助,谢谢!

【问题讨论】:

    标签: javascript jquery json jquery-mobile getjson


    【解决方案1】:

    我对@9​​87654322@ 毫无疑问。我不确定上面的代码框架是否正确。

    更好的方法是在 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 上不起作用...
    猜你喜欢
    • 1970-01-01
    • 2013-06-09
    • 2011-12-23
    • 2015-02-23
    • 2014-03-10
    • 1970-01-01
    • 2014-07-09
    • 2014-05-16
    • 2012-12-13
    相关资源
    最近更新 更多