我有这个代码:
HTML代码:
<script>
function loadXMLDoc(filename)
{
if (window.XMLHttpRequest)
{
xhttp=new XMLHttpRequest();
}
else
{
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET",filename,false);
xhttp.send();
return xhttp.responseXML;
}
var xmlDoc = loadXMLDoc('users.xml');
var x = xmlDoc.getElementsByTagName('usr');
document.write(x.length);
</script>
xml代码:
<?xml version="1.0" encoding="utf-8"?>
<users xmlns="http://localhost" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost users.xsd">
<usr><age>25</age><country>الاردن</country></usr>
<usr><age>30</age><country>مصر</country></usr>
</users>
我想将html代码包含在另一个html文档中,如下所示:
HTML代码:
<!DOCTYPE html unicode="utf-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
include 'users.html';
?>
</body>
</html>
javascript代码的输出是:0,而它应该是2,如果我用xml文档替换英文文本的阿拉伯语文本,输出变为2.
为什么阿拉伯语文本会破坏代码?
答案 0 :(得分:0)
如果你想使用ajax,为什么你想要在php页面中包含你的问题中没有描述的HTML(&#39; users.html&#39;),我并不感到害羞。无论如何,我在你的代码中看到了一些小问题。
现代浏览器中utf8的正确格式是:
<!doctype html>
<html>
<head>
<meta charset="utf-8"><!-- how to set utf8 in modern browsers -->
<title>Users</title>
<script>
function show(){
document.body.innerHTML=this.responseXML.getElementsByTagName('usr').length
}
window.onload=function(){
with(new XMLHttpRequest)open('get','users.xml'),onload=show,send()
}
</script>
</head>
<body>
</body>
</html>
这个例子适用于(使用你的xml与阿拉伯语),即10,chrome,safari,ios,android,opera e也可能在firefox中。
现在,如果你完全需要在一个php页面中包含html,你需要检查一些php设置,也许....快速搜索我发现这个......
mb_internal_encoding("UTF-8");
http://php.net/manual/en/function.mb-internal-encoding.php
但是有很多方法可以将编码设置为utf8&amp;包含文件......
如果你使用ajax,我个人不会使用你的方法...如果你坚持发布你的users.html
,那么我们就可以解决问题的原因提供更多信息。
js代码正确返回2的长度,ajax是异步的,它应该如何。 关于ajax的更多信息:https://stackoverflow.com/a/18309057/2450730
我使用with
:The use of "with" statement in javascript, in some extreme rare cases
注意:在另一个html页面中包含一个完整的html页面不是一个正确的方法,你应该只包括必要的部分(html元素)。
如果您对我的代码有任何疑问,请询问。