修改Geonames的JSON Ajax请求

时间:2013-06-21 13:40:20

标签: javascript jquery ajax json request

我有一个示例网站的代码,但我想知道是否有人可以告诉我如何修改下面的代码只返回美国的结果。

这是我到目前为止的代码:

  $(function() {
    function log( message ) {
      $( "<div>" ).text( message ).prependTo( "#log" );
      $( "#log" ).scrollTop( 0 );
    }

    $( "#city" ).autocomplete({
      source: function( request, response ) {
        $.ajax({
          url: "http://ws.geonames.org/searchJSON",
          dataType: "jsonp",
          data: {
            featureClass: "P",
            style: "full",
            maxRows: 12,
            name_startsWith: request.term
          },
          success: function( data ) {
            response( $.map( data.geonames, function( item ) {
              return {
                label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                value: item.name
              }
            }));
          }
        });
      },
      minLength: 2,
      select: function( event, ui ) {
        log( ui.item ?
          "Selected: " + ui.item.label :
          "Nothing selected, input was " + this.value);
      },
      open: function() {
        $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
      },
      close: function() {
        $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
      }
    });
  });

显然你可以这样请求JSON:

http://ws.geonames.org/searchJSON?name_startsWith=Chic&country=US

所以我的问题是,如何修改上面的代码,将“&amp; country = US”包含在请求中。我尝试了一些东西,但它完全打破了请求。

1 个答案:

答案 0 :(得分:2)

将country参数放在数据变量上:

      data: {
        featureClass: "P",
        style: "full",
        maxRows: 12,
        name_startsWith: request.term,
        country: "US"
      },

很简单!

这种情况下的数据变量用于构建Ajax请求的查询字符串。