0

これがmysqlクエリからデータを取得する多くの例を見つけました。jQuery関数に戻したいのは、解析されたJSON形式のhtmlコンテンツです。私がやりたいことは、ページの初期読み込みから PHP コードを分離することです。私はjQuery Mobileでこれをやっています。わかります、私の説明は悪く、言い方が難しいです。

データベースから記事名とリンクを取得し、リストビューを index.html に出力します。ユーザーが記事をクリックすると、URL でリンクを渡し、jQuery で取得し、その URL を解析する PHP ファイルを呼び出そうとします。すべてのコードは次のとおりです。

index.html:

<body>
  <div data-role="page" id="mainNews">
  <div data-role="content">
        <ul id="fnews" data-role="listview"></ul>
    </div>
</div>
<script src="js/getmainnews.js"></script>
</body>

getmainnews.js:

var serviceURL = "http://localhost/basket/services/";
var news;
$('#mainNews').bind('pageinit', function(event) {
getNews();
});
function getNews() {
$.getJSON(serviceURL + 'getmainnews.php', function(data) {
    $('#fnews li').remove();
    mainnews = data.items;
    $.each(mainnews, function(index, mnews) {
        $('#fnews').append('<li data-icon="false"><a style="white-space:normal;" href="newstext.html?url=http://www.basket-planet.com' + mnews.link + '">' + mnews.article + '</a></li>');
    });
    $('#fnews').listview('refresh');
});
}

getmainnews.php:

<?php
include 'connect_to_mysql.php';
mysql_query("SET NAMES UTF8");
$sql = mysql_query("SELECT * FROM basket_news");
$mainnews = array();
while ($r = mysql_fetch_assoc($sql)){
$mainnews[] = $r;
}
echo '{"items":'. json_encode($mainnews).'}';
?>

すべて正常にロードされますが、次のページは空になります。次の 3 つのファイルは次のとおりです。長いトピックで申し訳ありません。

newstext.html:

<body>
<div data-role="page" id="newstext">
  <div data-role="content">
        <div id="textcontent"></div>
    </div>
</div>
</body>

newstext.js:

var serviceURL = "http://localhost/basket/services/";
$('#newstext').bind('pageshow', function(event) {
var url = getUrlVars()["url"];
$.getJSON(serviceURL + 'getnewstext.php?url='+url, displayNewsText);
});
function displayNewsText(data){
var newstext = data.item;
$('#textcontent').append(newstext);
}
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
    hash = hashes[i].split('=');
    vars.push(hash[0]);
    vars[hash[0]] = hash[1];
}
return vars;
}

そして最後に getnewstext.php:

<?php
include_once ('simple_html_dom.php');
    $url = $_GET['url'];
    $html = file_get_html(''.$url.'');
    $article = $html->find('div[class=newsItem]');
    $a = str_get_html(implode("\n", (array)$article));
    @$a->find('div[style*=float]', 0)->outertext = '';
    @$a->find('h3', 0)->outertext = '';
    @$a->find('div[id=comments]', 0)->outertext = '';
    @$a->find('script', 0)->outertext = '';
    @$a->find('a[href*=register]', 0)->outertext = '';
    @$a->find('div', 4)->outertext = '';
    @$a->find('div', 6)->outertext = '';
    echo '{"item":'. json_encode($a) .'}';
?>

これらは6つのファイルです。newstext.html の URL には、PHP ファイルに渡す必要がある URL が含まれています。問題は最後の 3 つのファイルにあると確信しています。ここで何が間違っていますか?前もって感謝します!

更新: コンソール エラーは修正されましたが、まだページに出力がありません。

Update2: 周りを検索したところ、json_encode が配列のみを受け入れることがどこかでわかりました。最後の PHP スクリプトの $a は、あらゆる種類の html タグを含むページのコンテンツです。これを配列にするにはどうすればよいですか?値がすべてのhtmlコンテンツである1つのキー/値を作成するには?

4

1 に答える 1