ajax — получает данные XML с веб-сайта внутри файла PHP (внутренняя ошибка сервера)

Мне нужно получить данные XML с веб-сайта, используя ключ API, и я использую AJAX и PHP.
Вот мой код AJAX (кстати, файл PHP находится внутри сервера FileZilla):

var xmlHttpObj=null;
var isPostBack=false;

function CreateXmlHttpRequestObject( )
{

if (window.XMLHttpRequest)
{
xmlHttpObj=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
xmlHttpObj=new ActiveXObject("Microsoft.XMLHTTP")
}
return xmlHttpObj;
}

function MakeHTTPCall_Tags()
{

var link = "http://phpdev2.dei.isep.ipp.pt/~i110815/recebeXml.php";
xmlHttpObj = CreateXmlHttpRequestObject();
xmlHttpObj.open("GET", link, true);
xmlHttpObj.onreadystatechange = stateHandler_Tags;
xmlHttpObj.send();

}

function stateHandler_Tags()
{
if ( xmlHttpObj.readyState == 4 && xmlHttpObj.status == 200)
{
var selectTags = document.getElementById("tag");
var option;
var docxml = xmlHttpObj.responseXML;
var nodelist = docxml.getElementById("name");
alert(nodelist.length);
}
}

Вот код PHP:

<?php
header("Access-Control-Allow-Origin: * ");
// pedido ao last.fm com a função file_gets_contents
// a string XML devolvida pelo servidor last.fm fica armazenada na variável $respostaXML
$respostaXML=
file_get_contents("http://ws.audioscrobbler.com/2.0/?method=tag.getTopTags&api_key=4399e62e9929a254f92f5cde4baf8a16");

// criar um objecto DOMDocument e inicializá-lo com a string XML recebida
$newXML= new DOMDocument('1.0', 'ISO-8859-1');
$newXML->loadXML($respostaXML);
echo $newXML;
?>

Я получаю эту ошибку из консоли браузера:
ПОЛУЧИТЬ http://phpdev2.dei.isep.ipp.pt/~i110815/recebeXml.php 500 — внутренняя ошибка сервера)
Кто-нибудь знает, что не так?

1

Решение

Внутренняя ошибка сервера — это просто общее имя 500 HTTP код состояния:

500 — внутренняя ошибка сервера
Общее сообщение об ошибке, выдаваемое, когда возникло непредвиденное состояние и более подходящее сообщение не подходит.

Ты должен проверьте журнал ошибок вашего веб-сервера чтобы найти подробную информацию о фактической ошибке.

Судя по приведенному вами примеру кода, ошибка, вероятно, из-за этой части

$newXML->loadXML($respostaXML);
echo $newXML;

Ваш $newXML это DOMDocument пример. Это не реализует __toString так что это не может быть отражено таким образом. Вы должны использовать

Другими словами:

$newXML->loadXML($respostaXML);
echo $newXML->saveXml();

Смотрите мое введение в DOMDocument в php

С другой стороны: нет смысла загружать XML в DOM, если все, что вам нужно, это извлечь XML из удаленного API и затем вывести его. Просто сделай readfile вместо file_get_contents и удалить все после звонка.

Если это не исправит ошибку, я предполагаю, что ваш сервер имеет allow_url_fopen отключен, и вы не можете делать запросы к удаленным URL-адресам. Вам нужно найти другой способ загрузки XML.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]