0

次のコードでも同じ問題があります。

function getpgisdata() {
    sdata = ads.d;
    var send = $.post("csqcity.php", { variable:sdata }, function pgisquery(data) {
          alert("success");
       })
         .success(function() { alert("second success"); })
         .error(function() { alert("error"); })
         .complete(function() { alert("complete"); });
    send.complete(function(){ alert("second complete");
});

関数は次のように呼び出されます。

<div class="wrapSearch">
    <div>
        <input id="searchTextField" type="text" size="50" placeholder="Enter an address...">
        <input type="submit" name="search" id="search1" onclick="getpgisdata()">
    </div>
 <div class="listWrap" id="listWrap1">
    <ul class="searchList" id="searchList1">
    </ul>
 </div>

エラーは次のとおりです。

 TypeError: this is undefined

...n!a?l:Sd(this.lat(),a.lat())&&Sd(this.lng(),a.lng())};P[H].equals=P[H].b;P[H].la...
{main,places}.js (line 11)

Google と

Uncaught TypeError: Cannot call method 'lat' of undefined
                                                                %7Bmain,places%7D.js:11 

csqcity.php には以下が含まれます。

次のライブラリは、index.html で参照されます。

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places"></script>
<link rel="stylesheet" type="text/css" href="http://dev.openlayers.org/releases/OpenLayers-2.12/theme/default/style.css"/>
<link rel="stylesheet" type="text/css" href="http://dev.openlayers.org/releases/OpenLayers-2.12/examples/style.css"/>
<script type="text/javascript" src="http://dev.openlayers.org/releases/OpenLayers-2.12/OpenLayers.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"></script>

他に2つの機能があります。1 つは Google Autocompleter で、もう 1 つは Openlayers マップを描画します。エラーは Google ライブラリに関連しているため、オートコンプリート コードも添付します。

function initialize() {
    input = document.getElementById('searchTextField');
    var options = {
        componentRestrictions: {country: 'us'},
        //componentrestrictions: {administrative_area2: 'tx'}
    };
    autocomplete = new google.maps.places.Autocomplete(input, options);
    google.maps.event.addListener(autocomplete, 'place_changed', function() {
      //var place = autocomplete.getPlace();
      var place = autocomplete.getPlace();
      ads.d = place.geometry.location;
    });
  }
  google.maps.event.addDomListener(window, 'load', initialize);

誰かからのアイデアはありますか?前もって感謝します!

4

1 に答える 1

0

「this」の値を確認した後、コードを機能させることができました。私のコードでは、これは DOM ドキュメントでした。そのため、最初に $.post をトリガーした HTML input submit 要素内に囲み、this を HTML 入力として使用し、オートコンプリートの関連する入力テキストの値を使用します。私が行ったもう1つの間違いは、必要なデータをグローバル変数に保存することで、「これは未定義です」というエラーが発生しました。そこで、HTML 入力送信に関連付けられた HTML 入力テキストを呼び出しました (これが私の場合です)。

関数のコードは次のようになりました。

  $(document).ready(function () {
      $('#search1').click(function(){
           sdata = $('#searchTextField').val();
        if( sdata == undefined || sdata == 'Enter an address...' || sdata < 4 ){
        alert('Please insert or choose an address to proceed.');
        } else {
      $.post(
            'csqcity.php',
            { 'variable' : sdata },
            function( r_data ){
                alert(r_data);
            }       
        );
        }
      });
  });

$.post は成功しました。

提案をありがとう!彼らは私が問題を理解するのを助けました。

于 2013-01-19T15:04:49.683 に答える