0

クエリを PHP から Ajax に変換しようとしています。

現在これを使用して、PHP から曲 ID の結果を返しています。

<a href="javascript:songinfo(<?php echo $currentSong->ID; ?>)" title="Lyrics and song info"></a><?php echo $currentSong->title; ?>

これを使用すると、このようなものが得られます

http://chennaichristianradio.com/PHP/web/songinfo.php?songID=5506

Ajax から同じ結果を取得し、上記と同じ返されたアドレスを取得するにはどうすればよいですか? 末尾の曲 ID は、データベースから取得した情報です。これは、誰かがこのリンクをクリックして、曲 ID 5506 の内容を示す新しいページを開くために使用されます。

ここで、現在の PHP を使用して何をしようとしているのかを確認できます。「曲情報」ボタンの 1 つをクリックするだけです。

http://chennaichristianradio.com/PHP/web/history.php

AJAXを使用して次のことを試みましたが、成功しませんでした。私は AJAX と PHP を学んでいるので、私のコードを大声で笑わないでください。

脚本

document.getElementById('ID').innerHTML =  aj_ID "<a href="songinfo.php?songID=+ aj_results[7] + >"

そしてHTMLで

<a href="javascript:songinfo(<div id="id"></div>)" title="Lyrics and song info"><img src="../../images/info.png" alt="Track information" width="70" height="22" border="none" title="Song Info and Lyrics" /></a>

ご協力ありがとうございました

編集済み:これが私のajaxスクリプトです

<?php
//Sam Broadcaster - AJAX Module - Send Artist/Title/Duration and Seconds remaining to getXMLHTTPRequest
//Written, cobbled together by wilksy101. This code contain code sourced from the support forums and stuff written myself


    // Change to your database user name
    $username="************"; 


    //Change to your database password
    $password="************"; 


    // Change to your database name
    $database="************"; 

    // Connect to the database  
    mysql_connect('ccronline.dyndns.info',$username,$password);

    // Handle an error
    @mysql_select_db($database) or die( "Unable to select database");

        // Build Sql that returns the data needed - change this as required.    
        $sql = "SELECT songlist.*, historylist.listeners as listeners, historylist.requestID as requestID, historylist.date_played as starttime FROM historylist,songlist WHERE (historylist.songID = songlist.ID) AND (songlist.songtype='S' OR songlist.songtype='C' OR songlist.songtype='N') ORDER BY historylist.date_played DESC LIMIT 1";


        // Store results in result object
        $result = mysql_query($sql);


         //store values in vars for calculation for array creation
        $curPlay = mysql_query("SELECT * FROM historylist ORDER BY date_played DESC LIMIT 1");
        $curPlayRow = mysql_fetch_assoc($curPlay);
        if (!$curPlay) { echo( mysql_error()); }
        $dt_duration = mysql_result($result,$i,'duration');
        $title= mysql_result($result,$i,'title');
        $artist= mysql_result($result,$i,'artist');
        $album= mysql_result($result,$i,'album');
        $picture= rawurlencode(mysql_result($result,$i,'picture'));
        $lyrics= mysql_result($result,$i,'lyrics');
        $ID= mysql_result($result,$i,'ID');
        $curtime = time();
        $timeleft = $starttime+round($dt_duration/1000)-$curtime;
        $secsRemain = (round($dt_duration / 1000)-($curtime-$starttime));

        //build array to return via getXMLHTTPRequest object - you can include more vars but remeber to handle them
        //correcty in the useHttpResponse function      
        $Aj_array = $dt_duration . '|' . $secsRemain . '|' . $title . '|' . $artist .'|' . $album .'|' . $picture .'|' . $lyrics .'|' . $ID;

        //we are using the text response object  - which i think is easier for small data return
        //just echo the array                 - not so much AJAX rather AJA ??
        echo $Aj_array

?>
4

1 に答える 1

0

基本的に、AJAX を使用して同じページ内に表示されるhttp://chennaichristianradio.com/PHP/web/history.phpのポップアップ ウィンドウに現在表示されているコンテンツを取得しようとしていますか?

ここでの主な問題は、曲とそのリストの HTML 要素との関係を確立していないことだと思います。

すべての "fill" div を変更して、曲番号 EG: "fill5669" を含む ID を持つようにしてみてください。これを使用して、次の例のように、ページ内のどこに ajax 呼び出しからコンテンツをロードするかを決定できます。

関数 songInfo(songID){
    var xmlhttp;

    if (window.XMLHttpRequest){
        xmlhttp=新しい XMLHttpRequest();
    }else{// IE の古い無愛想なバージョンをサポートします。
        xmlhttp = 新しい ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=関数(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
                document.getElementById('fill'+songID).innerHTML=xmlhttp.responseText;
            }
    }
    xmlhttp.open("GET","http://chennaichristianradio.com/PHP/web/songinfo.php?songID="+songID,true);
    xmlhttp.send();
    false を返します。
}
于 2012-07-08T20:33:11.010 に答える