[英]Transferring DOMDocument from PHP to Javascript using function
I have a PHP function creating a DOMDocument XML file, i need to get the DOMDocument into Javascript, i have thought about using 我有一个PHP函数创建DOMDocument XML文件,我需要将DOMDocument转换为Javascript,我已经考虑过使用
The function in PHP returns the DOMDocument, this is the PHP function 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;
}
So what i want to do is call the function in Javascript, and returns the DOMDocument. 所以我想做的就是在Javascript中调用函数,并返回DOMDocument。
Try the following 尝试以下
<?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>
you can simply put this function to a URL ( eg have it in a standalone file? that's up to you ), and call it from the client side via AJAX. 您可以简单地将此函数放入URL(例如,将其保存在独立文件中吗?该由您决定),然后通过AJAX从客户端调用它。 For details on doing such a call, please reference How to make an AJAX call without jQuery? 有关进行此类调用的详细信息,请参考如何在不使用jQuery的情况下进行AJAX调用? . 。
Edit: try to create a simple PHP file that includes and calls the function you have. 编辑:尝试创建一个简单的PHP文件,其中包含并调用您具有的功能。 From what you've described so far, it will probably look like 根据您到目前为止的描述,它可能看起来像
<?php
include("functions.php");
print coursexml($cc, $type);
assuming this file is called xml.php , when you access it via your browser in http://mydomain.com/xml.php you should see the XML document (nothing related to Javascript so far). 假定此文件名为xml.php,当您通过浏览器访问http://mydomain.com/xml.php时 ,应该会看到XML文档(到目前为止,与Javascript无关)。
Now, in your main document, you include a piece of Javascript that will call upon this URL to load the XML. 现在,在您的主文档中,您将包含一段Javascript,它将调用此URL来加载XML。 An example would be (assuming you are using jQuery, for a simple Javascript function reference the above link) : 一个示例是(假设您使用的是jQuery,有关上述链接的简单Javascript函数请参见参考资料):
$.ajax({
url: "xml.php",
success: function(data){
// Data will contain you XML and can be used in Javascript here
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.