вернуть XML в JQuery AJAX - PullRequest
6 голосов
/ 19 мая 2011

Моя проблема в том, что я хочу вернуть XML-файл с сервера обратно клиенту и проанализировать его с помощью функции jjery ajax.Это код:

Клиент:

$("#submit").click(function(){          
    $.ajax({  
        type: "POST",  
        url: "search.php",  
        data: "whatever",
        dataType: "xml",
        async: false,
        success: function(xml){
            var data = $('doctor',xml).text();
            alert(data);
        }
    });
});

Сервер (файл php),

header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="utf-8"?>';
echo "<tables>";
echo "<doctor>Someone</doctor>";
echo "</tables>";

У меня пустое предупреждение, и я не знаю, почему ??


хорошо, я нашел это.мой php-файл был в такой форме
//some code
include("other.php");
//some other code

, где файл other.php был файлом, который я разместил выше.Я вырезал / вставил заголовок так, чтобы конечный php-файл был

//some code
header('Content-type: text/xml');
include("other.php");
//some other code

и other.php

echo '<?xml version="1.0" encoding="utf-8"?>';
echo "<tables>";
echo "<doctor>Someone</doctor>";
echo "</tables>";

, теперь он работает отлично.Спасибо за ваши быстрые ответы!

Ответы [ 4 ]

3 голосов
/ 07 сентября 2011

Работает нормально

Файл Post.php

if($_GET['id']!=""){    
    $array = array('satyam'  => 'satyam',
                   'class'   => 'B.TECH',
                   'company' => 'Ranosys');
}   

$new ='<?xml version="1.0" encoding="iso-8859-1"?><data>';
foreach($array as $key => $values){ 
    $new .= "<$key>$values</$key>";
}
echo $new.'</data>';

=================

function load_data(){
    $.ajax({
        url: "post.php",
        async: false, // stop browser for another activity
        data: "id=satyam",
        // dataType :'xml',
        error: function(e, b, error) { 
            for(var i in e){
              // alert(i);
            }
            alert(e.respone);
        },
        success: function(msg) {
            //alert($response);
            var data = $(msg).find("satyam").text();
            alert(data);
        }
    });
}
1 голос
/ 19 мая 2011

Попробуйте это: var data = $(xml).find('doctor').text()

В вашем примере 'xml' не является объектом jQuery.

0 голосов
/ 19 мая 2011

Вы должны изменить свою функцию на:

$("#submit").click(function(){       
    $.ajax({  
        type: "POST",  
        url: "search.php",  
        data: "whatever",
        dataType: "xml",
        async: false,
        success: function(xml){

            var xmlDoc;

            if (window.DOMParser) {
                parser = new DOMParser();
                xmlDoc = parser.parseFromString(xml, "text/xml");
            }
            else {// Internet Explorer
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = "false";
                xmlDoc.loadXML(xml);
            }
            var $response = $(xmlDoc);
            var data = $response.find("doctor").text()

            alert(data);
        }
    });
});

Причина if (window.DOMParser) { заключается в том, что у вас возникнет проблема с IE, выполняющимразборе.

0 голосов
/ 19 мая 2011

Вам нужно разобрать этот XML (я действительно не понимаю почему, но ...), вы можете сделать это, выполнив:

$(xml).find('doctor').text();

Пока.:)

...