【问题标题】:Jquery .ajax() function not returning values from codeigniter controllerJquery .ajax() 函数不从 codeigniter 控制器返回值
【发布时间】:2012-07-04 04:59:42
【问题描述】:

我有一个正在开发的网站,我正在尝试向控制器(codeigniter 框架)发出 ajax 请求。我在萤火虫中看到我的控制器正在接收我的帖子值,但由于某种原因它没有发回响应。我已经将它设置为非常简单,此时无需数据库调用,仅用于测试,但它仍然无法正常工作。有什么想法吗?

这是我认为的表格:

<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);
    });
});

【问题讨论】:

  • 试一试。从 ajax 中删除 data 属性并尝试此操作。同样在您的浏览器中,直接点击 url 并检查响应。让我们看看发生了什么!

标签: codeigniter jquery codeigniter-2


【解决方案1】:

你应该使用 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);
         } 
    });
});

【讨论】:

  • 之前试过了,又试了一次,还是不行。这很奇怪。
  • @DanielWhite 你应该使用成功回调,done() 在这里没用,你试过在函数之外回显一些东西吗?
  • 我已将我的 JS 更改为上面的(而不是 done() 函数),我尝试在另一个窗口中访问“page/citySearch”,我可以看到测试列表元素很好。
  • 我想通了。我的网址没有正确解析。我不得不更改我的网址: url: 'page/citySearch'; to: url: '';
【解决方案2】:

请按以下方式更改AJAX函数中的url。

$('#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);
     } 
});
});

【讨论】:

    猜你喜欢
    • 2012-02-21
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    相关资源
    最近更新 更多