处理ajax请求时PHP中未定义的索引

时间:2014-10-27 06:52:09

标签: php jquery ajax autocomplete

我正在使用AJAXjQuery制作自动填充文本框。这是我的客户端AJAX代码。

$(document).ready(function(){

    $('#tagtext').autocomplete({
        source: function( request, response ) {
            $.ajax({
                url : 'ajax.php',
                dataType: "json",
                data: {
                   name_startsWith: request.term,
                   type: 'country'
                },
                 success: function( data ) {
                     response( $.map( data, function( item ) {
                        return {
                            label: item,
                            value: item
                        }
                    }));
                }
            });
        },
        autoFocus: true,
        minLength: 0        
      }); 
});

这是我的服务器端ajax.php代码:

<?php
    require_once 'db_const.php';

    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    if(isset($_GET['type']) AND $_GET['type'] == 'country'){
        $result = $mysqli->query("SELECT tagname FROM tagtable where tagname LIKE '".strtoupper($_GET['name_startsWith'])."%'");    
        $data = array();
        while ($row = mysqli_fetch_array($result)) {
            array_push($data, $row['tagname']);
            //echo "Hello " .$row['tagname'];
        }   
        echo json_encode($data);
    } else {
        echo "hello";
    }    
?>

错误是我在$_GET['type']中没有获得国家的值(即$ _GET未设置),并且它超出了 if条件并执行 else 分支。

任何人都可以帮助我了解如何获得"$_GET['type'] == country"

1 个答案:

答案 0 :(得分:0)

似乎类型是保留字并指定请求类型: GET POST 。请考虑使用其他名称进行更改。请参阅jQuery Documentation,以下相关部分的摘录:

  

键入(默认:'GET')

     

类型:字符串

     

要求的类型(“POST”或“GET”),默认为“GET”。

     

注意:此处也可以使用其他HTTP请求方法,例如PUT和DELETE,但并非所有浏览器都支持它们。

因此,在您的示例中,类型将永远不会与“国家/地区”相匹配,但会“GET”