jquery mobile openlayer search

#javascript #jquery #json #mobile

#javascript #jquery #json #Мобильный

Вопрос:

в конце концов, у меня проблема с jquery mobile openlayer search;

 $('#searchpage').live('pageshow',function(event, ui){
$('#query').bind('change', function(e){
    $('#search_results').empty();
    if ($('#query')[0].value === '') {
        return;
    }
    $.mobile.showPageLoadingMsg();

    // Prevent form send
    e.preventDefault();

    var searchUrl = 'http://ws.geonames.org/searchJSON?featureClass=Pamp;maxRows=10';
    searchUrl  = 'amp;name_startsWith='   $('#query')[0].value;
    $.getJSON(searchUrl, function(data) {
        $.each(data.geonames, function() {
            var place = this;
            $('<li>')
                .hide()
                .append($('<h2 />', {
                    text: place.name
                }))
                .append($('<p />', {
                    html: '<b>'   place.countryName   '</b> '   place.fcodeName
                }))
                .appendTo('#search_results')
                .click(function() {
                    $.mobile.changePage('#mappage');
                    var lonlat = new OpenLayers.LonLat(place.lng, place.lat);
                    map.setCenter(lonlat.transform(gg, sm), 10);
                })
                .show();
        });
        $('#search_results').listview('refresh');
        $.mobile.hidePageLoadingMsg();
    });
});

// only listen to the first event triggered
$('#searchpage').die('pageshow', arguments.callee);
});
  

`

мой вопрос в том, что у меня есть файл json, но я не знаю, как изменить URL-адрес поиска, используя мой файл json.Мне нужна помощь здесь.

Большое вам спасибо

Ответ №1:

Поскольку вы на самом деле не указали явно, я предполагаю, что наряду с получением результатов поиска вы также хотите обновить свой searchUrl другим, который возвращается вашим файлом JSON, который вы захотите использовать для следующего поиска.

В этом случае самый простой способ, без масштабных операций с вашим текущим кодом, — поднять ваш searchUrl как глобальную переменную и включить метод для ее обновления.

 var jsonUrl = {
    param: 'http://ws.geonames.org/searchJSON?featureClass=Pamp;maxRows=10',
    update: function (url) {
        this.param = url;
    }
};
  

Измените это:

 var searchUrl = 'http://ws.geonames.org/searchJSON?featureClass=Pamp;maxRows=10';
searchUrl  = 'amp;name_startsWith='   $('#query')[0].value;
  

Для этого:

 var searchUrl = jsonUrl.param   'amp;name_startsWith='   $('#query')[0].value;
  

Предполагая, что ваш новый URL-адрес json находится в contained (your_json_object).url, добавьте одну строку перед закрытием $.getJSON:

 jsonURL.update(data.url);
  

Ваш окончательный код должен выглядеть следующим образом:

 var jsonUrl = {
    param: 'http://ws.geonames.org/searchJSON?featureClass=Pamp;maxRows=10',
    update: function (url) {
        this.param = url;
    }
};

$('#searchpage').live('pageshow',function(event, ui){
$('#query').bind('change', function(e){
$('#search_results').empty();
if ($('#query')[0].value === '') {
    return;
}
$.mobile.showPageLoadingMsg();

// Prevent form send
e.preventDefault();

var searchUrl = jsonUrl.param   'amp;name_startsWith='   $('#query')[0].value;
$.getJSON(searchUrl, function(data) {
    $.each(data.geonames, function() {
        var place = this;
        $('<li>')
            .hide()
            .append($('<h2 />', {
                text: place.name
            }))
            .append($('<p />', {
                html: '<b>'   place.countryName   '</b> '   place.fcodeName
            }))
            .appendTo('#search_results')
            .click(function() {
                $.mobile.changePage('#mappage');
                var lonlat = new OpenLayers.LonLat(place.lng, place.lat);
                map.setCenter(lonlat.transform(gg, sm), 10);
            })
            .show();
    });
    $('#search_results').listview('refresh');
    $.mobile.hidePageLoadingMsg();
});
});

// only listen to the first event triggered
$('#searchpage').die('pageshow', arguments.callee);

//add this to update new URL retrieved into your jsonUrl object.
jsonURL.update(data.url);
});
  

Комментарии:

1. Спасибо за ваш ответ, я просто меняю jsonURL на this, var jsonUrl = { param: ‘test.json’, update: function (url) { this.param = url; } }; это правильно?

2. переменной «param» должен быть URL-адрес, с которого вы получаете данные. Учитывая контекст вашего вопроса, это было бы » ws.geonames.org/searchJSON ? featureClass= Pamp; maxRows = 10 » как то, что я написал выше.

3. я отредактировал свой ответ выше, чтобы включить полный код в конце.

4. пожалуйста, примите ответ, если это то, что вам нужно. Спасибо.

5. спасибо за информацию, как я хочу изменить и использовать свой собственный файл json вместо использования «ws.geonames.org/searchJSON ? featureClass=Pamp;maxRows=10»; у меня есть json имя файла test.json