首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax工作不正常

Ajax工作不正常
EN

Stack Overflow用户
提问于 2014-02-22 06:53:51
回答 3查看 184关注 0票数 2

使用ajax在输入pincode时查找位置。但它不能正常工作。当我们输入每一个弹码时,就会检查该密码,然后显示该位置的结果。

代码语言:javascript
复制
    <label for="pincode">Pin-Code:</label>
  <input name="pincode" type="text" class="text" id="pincode"  />
  <div id="section1"></div>

我将此部分设置为输入字段。

代码语言:javascript
复制
 <script>
    $(document).ready(function() {  
         $('#pincode').keyup(function() {
                //ajax request
                $.ajax({
                     url: "pincode_check.php",
                    data: {
                        'pincode' : $('#pincode').val()
                    },
                    dataType: 'json',
                    success: function(data) { console.log(data.success);
                        if(data.success){
                            $.each(data.results[0].address_components, function(index, val){
                                 console.log(index+"::"+val.long_name);                         
                                 $('#section1').append( val.long_name+'<br>');
                             });    
                        }       
                    },      
                });
            });
       });


    </script>

这是将数据发送到pincode_check.php.的ajax部分。我正在做pincode_check.php,如下所示。在这里,在$pincode变量中传递值检索,然后使用$pincode查找该位置的逻辑。那就找个合适的地方。该地名显示在窗体字段下面。但它不能正常工作。

代码语言:javascript
复制
     <?php 
    $pincode=$_REQUEST['pincode'];
    $geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$pincode.'&sensor=false');
    $response= json_decode($geocode); //Store values in variable
    $lat = $response->results[0]->geometry->location->lat; //Returns Latitude
    $long = $response->results[0]->geometry->location->lng; // Returns Longitude
    $geocode=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng='.$lat.','.$long.'&sensor=false');
    $data= json_decode($geocode);

    if($data==true)
    { // Check if address is available or not
        $data->results[0]->formatted_address ;   
        $data->success=true;
        echo json_encode($data);
    }
    else {
        $data->success= false;

        echo json_encode($data);
    }

?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-22 06:57:37

试试这个,在ajax响应中,success对象被遗漏了。我重写了密码,

还有,pincode_check.php

代码语言:javascript
复制
if($data==true)
{ // Check if address is available or not
    $data->result[0]->formatted_address ;   
    $data->success=true;
    echo json_encode($data);
}
else {
    $data->success= false;      
    echo json_encode($data);
}

在html中:应该是( in html id元素)

代码语言:javascript
复制
<div id="section1"></div>

而不是

代码语言:javascript
复制
<div id="#section1"></div>

更新:

代码语言:javascript
复制
    <script>
    $(document).ready(function() {  
         $('#pincode').keyup(function() {
                //ajax request
                $.ajax({
                     url: "pincode_check.php",
                    data: {
                        'pincode' : $('#pincode').val()
                    },
                    dataType: 'json',
                    success: function(data) { console.log(data.success);
                        if(data.success){
                            $.each(data.results[0].address_components, function(index, val){
                                 console.log(index+"::"+val.long_name);                         
                                 $('#section1').append( val.long_name+'<br>');
                             });    
                        }       
                    },      
                });
            });
       });


    </script>

HTML:

代码语言:javascript
复制
  <label for="pincode">Pin-Code:</label>
  <input name="pincode" type="text" class="text" id="pincode"  />
  <div id="section1"></div>

PHP代码

代码语言:javascript
复制
<?php 
    $pincode=$_REQUEST['pincode'];
    $geocode=file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$pincode.'&sensor=false');
    $response= json_decode($geocode); //Store values in variable
    $lat = $response->results[0]->geometry->location->lat; //Returns Latitude
    $long = $response->results[0]->geometry->location->lng; // Returns Longitude
    $geocode=file_get_contents('http://maps.googleapis.com/maps/api/geocode/json?latlng='.$lat.','.$long.'&sensor=false');
    $data= json_decode($geocode);

    if($data==true)
    { // Check if address is available or not
        $data->result[0]->formatted_address ;   
        $data->success=true;
        echo json_encode($data);
    }
    else {
        $data->success= false;

        echo json_encode($data);
    }

?>
票数 1
EN

Stack Overflow用户

发布于 2014-02-22 07:06:15

调试您的脚本。

您是否在$pincode变量中获取数据?

代码语言:javascript
复制
var_dump($pincode);

我更喜欢在ajax请求中使用定义的方法,比如post:

代码语言:javascript
复制
$.ajax({
    url: "pincode_check.php",
    method: 'POST'
    data: {
        'pincode' : $('#pincode').val()
    },
    dataType: 'json',
    success: function(data) {
        if(data.success ==true){
            $('#section1').html(data.address_components);
        }

    },

});

您的成功函数已经有了响应,没有必要使用条件:

代码语言:javascript
复制
if(data.success ==true){
            $('#section1').html(data.address_components);
        }

试着调试它,以了解您正在接收哪些数据:

代码语言:javascript
复制
success: function(data) {
           console.log(data);
        }

    },
票数 0
EN

Stack Overflow用户

发布于 2014-02-22 07:08:24

试试这个已经准备好的处理程序

代码语言:javascript
复制
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {

 $('#pincode').live('change', function() {
    //ajax request
    $.ajax({
        url: "pincode_check.php",
        data: {
            'pincode' : $('#pincode').val()
        },
        dataType: 'json',
        success: function(data) {
            if(data.success ==true){
                $('#section1').html(data.address_components);
            }

        },

    });
});




  });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21950931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档