2014-08-28 5 views
-2

У меня есть этот код:
HTML код:арабский язык в XML

<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> 

выход яваскрипта код: 0 в то время как оно должно быть 2, и если я заменить арабский текст в XML-документ с английским текстом выход стал 2.
Почему арабский текст нарушая код?

+0

Невозможно воспроизвести. Можете ли вы показать соответствующие заголовки HTTP и/или дать живой URL для тестирования? Есть ли сообщения об ошибках в консоли браузера? –

+0

@ JukkaK.Korpela это то, что я получаю при запуске var_dump (headers_list()); "array (2) {[0] => string (24)" X-Powered-By: PHP/5.3.24 "[1] => строка (23)" Content-type: text/html "}" и нет У меня нет живого URL-адреса, и в консоли браузера нет сообщений об ошибках. – user3926604

+0

Что произойдет, если вы вставляете элемент 'script' непосредственно в html-код вместо использования PHP для включения? (Я просто пытаюсь уменьшить проблему до более простого случая.) –

ответ

0

Я не понимаю, почему вы хотите включить HTML ('users.html'), который не описан в вашем вопросе внутри php-страницы, если вы используете ajax. в любом случае я вижу некоторые незначительные проблемы в вашем коде.

правильное форматирование для 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, хром, сафари, ИОС, андроид, опера е, вероятно, также в Fire Fox.

теперь, если вы полностью должны включать HTML внутри страницы PHP вам необходимо проверить некоторые настройки PHP возможно .... с быстрым поиском я нашел это ...

mb_internal_encoding("UTF-8"); 

http://php.net/manual/en/function.mb-internal-encoding.php

, но есть много способов, чтобы установить кодировку utf8 & включают файлы ...

Лично я не хотел бы использовать свой подход, если вы используете 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 элементы) ,

если у вас есть вопросы о моем коде, просто спросите.