Я использую метод JQuery .ajax, чтобы получить результаты простого PHP-запроса в XML (который я неоднократно выполнял в этом проекте без проблем). Тем не менее, результат XML, который я получаю из своего основного проекта, отличается от того, что я ожидаю (что было проверено простым просмотром файла PHP) при просмотре результатов в консоли Firebug. Я также проверил это снова, создав новый файл PHP, единственной функцией которого является запуск вызова ajax, и результаты были правильными, как и ожидалось.
[Обновление]: я только что снова проверил это, и я получил правильные результаты из своего проекта, но когда я обновляю страницу, я снова получаю неправильные результаты.
Ради тестирования я упростил процесс, удалив все данные POST и функцию обратного вызова success, но я все еще получаю другие результаты.
Вот фрагменты кода:
AJAX-вызов JQuery (используется как в тестовом файле, так и в моем проекте):
$.ajax({
url:"./lib/ajax_friends.php",
type:"POST",
// data:{action : "getFriends", userID: userID} ,
dataType: 'xml',
sync:false,
error:function(request){alert("error")},
success:function(theXML){
}
})
Код PHP:
$userID='11';
$sql = "SELECT ID, name, pic_square FROM users WHERE ID = $userID";
$result = mysql_query($sql) or die(mysql_error());
$xml = "";
while($array = mysql_fetch_array($result)) {
$ID = $array['ID'];
$Name = $array['name'];
$pic_square = $array['pic_square'];
$xml .= "<Friend>";
$xml .= "<ID>$ID</ID>";
$xml .= "<Name>$Name</Name>";
$xml .= "<Pic>$pic_square</Pic>";
$xml .= "</Friend>";
}
header('Content-Type: application/xml; charset=ISO-8859-1');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
echo "<Friends>";
echo $xml;
echo "</Friends>";
Примечание. Я попытался изменить заголовки, чтобы принудительно выполнить полное обновление, но это все равно не помогло
Тестовый файл
Заголовки из Firebug тестового PHP-файла (который возвращает правильные результаты):
Response Headers
Date
Fri, 08 May 2009 18:53:34 GMT
Server
Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7l DAV/2 PHP/5.2.6
X-Powered-By
PHP/5.2.6
Cache-Control
no-cache, must-revalidate
Expires
Mon, 26 Jul 1997 05:00:00 GMT
Content-Length
200
Keep-Alive
timeout=5, max=98
Connection
Keep-Alive
Content-Type
application/xml; charset=ISO-8859-1
Request Headers
Host
localhost
User-Agent
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10
Accept
application/xml, text/xml, */*
Accept-Language
en-us,en;q=0.5
Accept-Encoding
gzip,deflate
Accept-Charset
ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive
300
Connection
keep-alive
X-Requested-With
XMLHttpRequest
Referer
http://localhost/~Seeff/testajax.php
Cookie
a7c768c2549daf4a7f69b9916bab5a38=4555bf36cf1b308f19a12f8da6944b80; a7c768c2549daf4a7f69b9916bab5a38_user
=507514167; a7c768c2549daf4a7f69b9916bab5a38_ss=kKgqsUlOrFArzo9Nrv2Zyg__; a7c768c2549daf4a7f69b9916bab5a38_session_key
=3.qPXakpbNIIX_bvndm_5gnA__.86400.1241895600-507514167; a7c768c2549daf4a7f69b9916bab5a38_expires=1241895600
; fbsetting_a7c768c2549daf4a7f69b9916bab5a38=%7B%22connectState%22%3A1%2C%22oneLineStorySetting%22%3A1
%2C%22shortStorySetting%22%3A1%2C%22inFacebook%22%3Afalse%7D
И ответ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Friends><Friend><ID>12</ID><Name>XXX
</Name><Pic>http://something</Pic></Friend></Friends>
Основной проект
Заголовки Firebug от вызова ajax из моего основного проекта:
Response Headers
Date
Fri, 08 May 2009 18:53:41 GMT
Server
Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7l DAV/2 PHP/5.2.6
X-Powered-By
PHP/5.2.6
Cache-Control
no-cache, must-revalidate
Expires
Mon, 26 Jul 1997 05:00:00 GMT
Content-Length
74
Keep-Alive
timeout=5, max=98
Connection
Keep-Alive
Content-Type
application/xml; charset=ISO-8859-1
Request Headers
Host
localhost
User-Agent
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.10) Gecko/2009042315 Firefox/3.0.10
Accept
application/xml, text/xml, */*
Accept-Language
en-us,en;q=0.5
Accept-Encoding
gzip,deflate
Accept-Charset
ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive
300
Connection
keep-alive
X-Requested-With
XMLHttpRequest
Referer
http://localhost/~Seeff/
Cookie
a7c768c2549daf4a7f69b9916bab5a38=4555bf36cf1b308f19a12f8da6944b80; a7c768c2549daf4a7f69b9916bab5a38_user
=507514167; a7c768c2549daf4a7f69b9916bab5a38_ss=kKgqsUlOrFArzo9Nrv2Zyg__; a7c768c2549daf4a7f69b9916bab5a38_session_key
=3.qPXakpbNIIX_bvndm_5gnA__.86400.1241895600-507514167; a7c768c2549daf4a7f69b9916bab5a38_expires=124
1895600
И ответ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Friends></Friends>
Так что по какой-то причине внутренний XML-узел исключается из результатов при вызове из основного проекта.
Я предполагаю, что в моем основном проекте есть что-то, что должно каким-то образом вмешиваться, но я просто не могу понять это. Любая помощь с благодарностью!