【问题标题】:Codeigniter AJAX data returns emptyCodeigniter AJAX 数据返回空
【发布时间】:2016-02-26 19:46:16
【问题描述】:

所以我并不完全精通使用 codeiginiter,但我已经使用它一段时间了。

我正在尝试进行 SQL 查询来搜索数据库中的书籍,但 ajax 总是返回空。

我回显了一些虚拟字符串以确保在控制器和视图之间建立了正确的连接,并且我确保 SQL 查询本身可以正常工作,但我不明白为什么仍然会发生这种情况。

这是javascript:

    $('#search').on("keyup", function() {
search = $(this).val();
console.log("Search Term: " + search);
$.ajax
({
    type: "POST",
    url: base_url + "vault/quick_search",
    data: {search_term:search},
    dataType: 'json',
    success: function(data)
    {
      console.log("Result: " + data);
    }, 
    error: function(data)
    {
        alert("?");
    }
});
});

这是控制器:

      function quick_search()
    {
       $search = $this->input->post('search_term');
       $result = $this->vault_instance->quick_search($search);
       echo json_encode($result);
    }

这是模型:

      function quick_search($search_term)
 {
   $sql = "SELECT * FROM books WHERE title LIKE '%harr%' OR author LIKE '%harr%'";
    $query = $this->db->query($sql);
    return $query->result_array;
 }

注意:抱歉编辑不佳,这是我第一次提出问题。 另外,在我使用“harr”作为测试的模型中,我知道这不是搜索词本身,它仍然返回空

【问题讨论】:

  • 但是您对代码进行了很好的编辑。但请等待提示。
  • 欢迎您!你是在本地机器上开发吗?一些浏览器具有使 Ajax 变得棘手的安全措施。您的浏览器的开发控制台中是否有任何错误/警告?
  • 您是否检查过您是否在控制台中看到任何错误
  • 我想你在这里有问题return $query->result_array;这应该是return $query->result_array();
  • 是的,我正在本地机器上工作。实际上没有任何警告或错误。我做过很多其他的 AJAX 调用;他们工作得很好。然而,这个不是。

标签: javascript php sql ajax codeigniter


【解决方案1】:

你需要改变这一行:

return $query->result_array; 

return $query->result_array();

因为result_array() 是一个将结果返回为数组格式的函数。

【讨论】:

    【解决方案2】:

    您对数据库列使用的排序规则是什么?如果不是 utf8_general_ci 尝试更改为它。

    【讨论】:

      【解决方案3】:

      不确定这是否有效,但是...尝试将$.ajax 调用中的数据类型更改为jsonp(而不是json)。

      【讨论】:

      • 这不会改变任何事情
      • AJAX 现在返回错误。我还需要修改什么才能让 jsonp 正常工作吗?
      • @Sushanth jsonp 如果您由于同域策略限制而没有返回 AJAX 数据,则可以提供帮助。
      猜你喜欢
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      相关资源
      最近更新 更多