jQuery中的自动完成只是...停止工作?

时间:2011-05-13 18:54:45

标签: javascript jquery mysql codeigniter autocomplete

我让jQuery自动完成与CodeIngiter完美配合,莫名其妙地它完全停止运行。当我访问自动完成控制器时,我仍然看到正确的数组 - Javascript只是没有返回JSON数据。是什么让它变得奇怪,它工作正常,然后突然停止工作。

这是我的Javascript:

$( "#clubs-complete" ).autocomplete({
    source: function(request, response) {
        $.ajax({
            url: 'http://www.myurl.com/create/autocomplete',
            data: 'term='+$("#clubs-complete").val(),
            dataType: "json",
            type: "POST",
            success: function(data){
                alert(data);
                response(data);
            }
    });
},
minLength: 1
});

这是我的控制器:

public function autocomplete()
{
    // Search term from jQuery
    $term = $this->input->post('term');

$this->db->select('name','address2');
$this->db->from('clubs');
$this->db->like('name', $term);
$suggestions = $this->db->get()->result();

if (count($suggestions) > 0) {
    $data = array();

    foreach ($suggestions as $suggestion) {
        array_push($data, $suggestion->name);
    }

        // Return data
        echo json_encode($data);
}


}

有谁知道发生了什么事? javascript函数中的警报现在没有返回任何内容,它曾经用过。当我直接访问URL时,我仍然可以看到完整的数组。

请帮忙,我正在撕开我的头发。

1 个答案:

答案 0 :(得分:4)

如果按F12,在IE中可以developer tools。在Firefox中有类似Firebug的类似内容。在其中任何一个中,您都可以在浏览器中调试javascript。在源fn内部以及成功函数内设置断点,它可以为您提供一些见解。

您可能还想获得一个http调试代理,例如Fiddler2或Charles,它可以让您看到传出的HTTP请求及其相应的响应。 Fiddler2在Windows上运行,可与FF和IE以及几乎所有其他http客户端一起使用。这将让您看到您的AJAX服务返回到浏览器内javascript的消息。

这些事情应该让你深入了解“不工作”的问题。