0

DOMDocument XML ファイルを作成する PHP 関数があります。DOMDocument を Javascript にする必要があります。

PHP の関数は DOMDocument を返します。これは PHP 関数です。

function coursexml($cc, $type){
    $xmlfile = new DOMDocument();

    if (@$xmlfile->load("books.xml") === false || $cc == "" || $type == "") {

        header('location:/assignment/errors/500');
        exit;
    }
    $string = "";

    $xpath = new DOMXPath($xmlfile);
    $nodes = $xpath->query("/bookcollection/items/item[courses/course='$cc']");
    $x = 0;
    foreach( $nodes as $n ) {

        $id[$x] = $n->getAttribute("id");

        $titles = $n->getElementsByTagName( "title" );
        $title[$x] = $titles->item(0)->nodeValue;
        $title[$x] = str_replace(" /", "", $title[$x]);
        $title[$x] = str_replace(".", "", $title[$x]);

        $isbns = $n->getElementsByTagName( "isbn" );
        $isbn[$x] = $isbns->item(0)->nodeValue;

        $bcs = $n->getElementsByTagName( "borrowedcount" );
        $borrowedcount[$x] = $bcs->item(0)->nodeValue;

        if ($string != "") $string = $string . ", ";

        $string = $string . $x . "=>" . $borrowedcount[$x];
        $x++;
    }

    if ($x == 0) header('location:/assignment/errors/501');
    $my_array = eval("return array({$string});");
    asort($my_array);

    $coursexml = new DOMDocument('1.0', 'utf-8');
    $coursexml->formatOutput = true;
    $node = $coursexml->createElement('result');
    $coursexml->appendChild($node);
    $root = $coursexml->getElementsByTagName("result");
    foreach ($root as $r) {
        $node = $coursexml->createElement('course', "$cc");
        $r->appendChild($node);
        $node = $coursexml->createElement('books');
        $r->appendChild($node);
        $books = $coursexml->getElementsByTagName("books");
        foreach ($books as $b) {
            foreach ($my_array as $counter => $bc) {
                $bnode = $coursexml->createElement('book');
                $bnode = $b->appendChild($bnode);
                $bnode->setAttribute('id', "$id[$counter]");
                $bnode->setAttribute('title', "$title[$counter]");
                $bnode->setAttribute('isbn', "$isbn[$counter]");
                $bnode->setAttribute('borrowedcount', "$borrowedcount[$counter]");
            }
        }
    }   
    return $coursexml;
}

だから私がしたいのは、Javascript で関数を呼び出し、DOMDocument を返すことです。

4

2 に答える 2

1

以下を試してください

<?php include('coursexml.php'); ?> 
<script> 
    var xml = <?php $xml = coursexml("CC140", "xmlfile"); 
                    echo json_encode($xml->saveXML()); ?>; 
    document.write("output" + xml);
    var xmlDoc = (new DOMParser()).parseFromString(xml, 'text/xml');
</script>
于 2013-02-26T19:02:06.357 に答える
0

この関数を URL に配置するだけで (たとえば、スタンドアロン ファイルにするかどうかはあなた次第です)、AJAX を介してクライアント側から呼び出すことができます。このような呼び出しの詳細については、jQuery を使用せずに AJAX 呼び出しを行う方法を参照してください。.

編集: あなたが持っている関数を含めて呼び出す単純なPHPファイルを作成してみてください。これまで説明してきたことから、おそらく次のようになります

 <?php 
    include("functions.php");
    print coursexml($cc, $type);

このファイルが xml.php と呼ばれると仮定すると、ブラウザ経由でhttp://mydomain.com/xml.phpにアクセスすると、XML ドキュメントが表示されるはずです (これまでのところ、Javascript に関連するものは何もありません)。

ここで、メイン ドキュメントに、この URL を呼び出して XML をロードする Javascript の一部を含めます。例は次のようになります(jQueryを使用していると仮定すると、単純なJavascript関数は上記のリンクを参照します):

 $.ajax({
   url: "xml.php",
   success: function(data){
      // Data will contain you XML and can be used in Javascript here
   }
 });
于 2013-02-26T17:31:46.310 に答える