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


Undefined index in PHP when processing ajax request

我正在使用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']中没有获得country的值(即未设置$_GET),并且它超出了if条件并执行else分支。

关于如何获得"$_GET['type'] == country",有人能帮我吗?

似乎type是一个保留字,并指定请求的类型:GETPOST。请考虑换个名字。参见jQuery文档,摘录如下相关部分:

类型(默认值:"GET")

类型:字符串

要发出的请求类型("POST"或"GET"),默认为"GET"。

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

因此,在您的示例中,类型永远不会匹配"country",而是"GET"