0

ajax 和 xml 解析器

$.ajax({
    url: 'http://geocode-maps.yandex.ru/1.x/?geocode=43.2491,76.9198&sco=latlong&kind=house&results=7',//here get the XML wirh all adresses and coords
    type: 'GET',
    dataType: 'html',
    success: function(d){
        $("#message").html('');
        var coord = $(d).find('pos').text();
        $(d).find('name').each(function(){
            $('#message').prepend("<div class='addresses' onClick='insert_adress($(this).text());'>"+$(this).text()+" и "+coord+"</div>"); //here it write to a box                
        })
    }
});

这是示例 oj jssfile

4

5 回答 5

0

尝试这个,

var coord = $(d).find('pos').text();

完整代码

$.ajax({
    url: 'http://geocode-maps.yandex.ru/1.x/?geocode=43.2491,76.9198&sco=latlong&kind=house&results=7',
    type: 'GET',
    dataType: 'html',
    success: function(d){
        $("#message").html('');
        var coord = $(d).find('pos').text();// pos text not its next element's text
        $(d).find('name').each(function(){
            $('#message').prepend("<div class='addresses' onClick='insert_adress($(this).text());'>"+$(this).text()+" и "+coord+"</div>");                 
        });
    }
});

小提琴

于 2013-10-04T05:29:33.433 回答
0

我可以建议您使用php将xml转换为json,然后将其发送到js。

于 2013-10-04T05:16:06.137 回答
0

如果您检查了控制台,您会看到以下错误

Uncaught TypeError: Object 76.919800 43.24910076.919684 43.24921476.919989 43.24876176.920375 43.24899176.920294 43.24949676.919692 43.24842676.919100 43.24855776.918695 43.249010 has no method 'next'

这条线是你的问题的原因。

var coord = $(d).find('pos').text().next();  //remove next will fix it

在JSFiddle中检查这个

仅供参考:按 F12,检查控制台是否有任何错误。

于 2013-10-04T05:16:44.200 回答
0

请试试这个 http://jsfiddle.net/cHJ6S/3/

...
            $(d).find('GeoObject').each(function () {
              var coord = $(this).find('pos').text();
              var name =  $(this).find('name').text();
              $('#message').prepend("<div class='addresses' onClick='insert_adress($(this).text());'>"+name+" и "+coord+"</div>"); 
            });
...

这是你想要的结果吗?

улица Муратбаева, 183 и 76.918695 43.249010
улица Муратбаева, 185 и 76.919100 43.248557
улица Муратбаева, 168 и 76.919692 43.248426
улица Карасай батыра, 108 и 76.920294 43.249496
улица Шагабутдинова, 103а и 76.920375 43.248991
улица Муратбаева, 166 и 76.919989 43.248761
улица Муратбаева, 164 и 76.919684 43.249214
于 2013-10-04T05:27:19.037 回答
0

代替$(d).find('name'),

利用$(d).find('featuremember').each(function(){...}),

featuremember - 代表对象,所以为什么不循环遍历对象

然后使用内部循环

var pos = $($(this).find('pos')).text();
var name = $($(this).find('name')).text();

最后

$('someId').prepend(name + ' pos: ' + pos);
于 2013-10-04T05:23:24.660 回答