2012-07-04 38 views
1

我有一个网站,我正在努力,我试图向控制器(codeigniter框架)发出ajax请求。我在firebug中看到我的控制器正在收到我的post值,但由于某种原因它没有发送回应。我已经将它设置为非常简单,没有数据库调用,只是为了测试而且它仍然不工作。有任何想法吗?Jquery .ajax()函数不返回codeigniter控制器的值

这是我在我看来形式:

<div class="purchaseState"> 
    <input type="text" name="city" id="city" class="grayGrad"/> 
</div>  
<div> 
    <ul id="cityResults"> 
      <!-- AJAX results here --> 
    </ul> 
</div> 

这里是我的控制器将在返回值:

function citySearch() { 
    echo '<li>test</li>'; 
} 

这里是我的jQuery的AJAX

//New City Search 
$('#city').keyup(function() { 

    var city = $('#city').val(); 

    $.ajax({ 
     type: "POST", 
     url: "page/citySearch", 
     data: { city: city }, 
     }).done(function(data) { 
     $('ul#cityResults').append(data); 
    }); 
}); 
+0

只是试一试。从ajax中移除数据属性并尝试这个。同样在你的浏览器中,直接点击url并检查响应。让我们看看发生了什么! – Jebin

回答

0

你应该使用AJAX success回调:

$('#city').keyup(function() { 

var city = $('#city').val(); 

    $.ajax({ 
     type: "POST", 
     url: "page/citySearch", 
     data: { city: city }, 
     success: function(data) { 
      $('ul#cityResults').append(data); 
     } 
    }); 
}); 
+1

之前尝试过,只是再试一次,没有奏效。这很奇怪。 –

+0

@DanielWhite你应该使用成功的回调函数,'done()'在这里没有用处,你是否试过在函数外回显一些东西? – undefined

+0

我已经改变了我的JS到上面(而不是done()函数),我尝试访问另一个窗口中的“page/citySearch”,我可以看到测试列表元素正常。 –

0

请按以下方式更改AJAX功能中的网址。

$('#city').keyup(function() { 
var city = $('#city').val(); 
$.ajax({ 
    type: "POST", 
    url: "<?php echo base_url; ?>page/citySearch", 
    data: { city: city }, 
    success: function(data) { 
     $('ul#cityResults').append(data); 
    } 
}); 
});