【问题标题】:ajax json working on local but not on remote server codeigniterajax json 在本地但不在远程服务器上工作
【发布时间】:2018-11-30 09:36:53
【问题描述】:

访问here,前面的搜索栏是自动完成的 当我在 localhost 上使用并将结果附加到 li 下时,它工作正常,但是当我上传到实时服务器时,它显示 404

This 是指向 custom.js 的链接,浏览器在该链接上显示 404();

主要:Custom.js:

$(document).ready(function () {
$("#CompanyName").keyup(function () {
    $.ajax({
        type: "POST",
        url: "http://www.sonnify.de/reviewotter/autocomplete/GetCompanyName",
        data: {
            keyword: $("#CompanyName").val()
        },
        dataType: "json",
        success: function (data) {
            if (data.length > 0) {
                $('#Dropdowncompany').empty();
                $('#CompanyName').attr("data-toggle", "dropdown");
                $('#Dropdowncompany').dropdown('toggle');
                alert("i am here");
            }
            else if (data.length == 0) {
                $('#CompanyName').attr("data-toggle", "");
            }
            $.each(data, function (key,value) {
                if (data.length >= 0)
                    $('#Dropdowncompany').append('<li role="displayCompanies" 
                   id="displayCompanies" ><a role="menuitem 
                   dropdowncompanyli" class="dropdownlivalue">' + 
                   value['CompanyName'] + '</a></li>');
            });
        }
    });
});
$('ul.txtcompany').on('click', 'li a', function () {
    $('#CompanyName').val($(this).text());
    var CompanyName = $(this).text();
    alert(CompanyName); 
    window.location.href = "http://localhost/reviewotter/company2? 
    company="+CompanyName+"";
    //window.location.href = "http://localhost/reviewotter/company2? 
   lat="+elemA+"&lon="+elemB+"&setLatLon=Set";
});});

模型:datacomplete.php:

<?php
class Datacomplete extends CI_Model{
public function GetRow($keyword) {        
    $this->db->order_by('Id', 'DESC');
    $this->db->like("CountryName", $keyword);
    return $this->db->get('company')->result_array();
}}

控制器:autocomplete.php

<?php
class Autocomplete extends CI_Controller{
function __construct() {
    parent::__construct();
    $this->load->model('datacomplete');
}

public function index(){
    //$this->load->view('view_demo');
    $this->load->view('home');
}
public function GetCompanyName(){
    $keyword=$this->input->post('keyword');
    $data=$this->datacomplete->GetRow($keyword);        
    echo json_encode($data);
 }

}
?>

【问题讨论】:

  • 您是否注意到您的脚本中有window.location.href = "http://localhost/reviewotter/company2? 硬编码?
  • window.location.href = "localhost/reviewotter/company2? company="+CompanyName+"";更新链接
  • 并且还使用base_urlsite_url 作为url 路径
  • 显示404错误,检查路由文件
  • 检查控制台你有几个错误,Uncaught TypeError: Cannot read property 'parentElement' of nullUncaught TypeError: Cannot read property 'firstChild' of null 和一个与自动完成有关的错误:jquery.min.js:6 POST http://www.sonnify.de/reviewotter/autocomplete/GetCompanyName 404 (Not Found)

标签: php jquery codeigniter http-status-code-404 jquery-ui-autocomplete


【解决方案1】:

让我猜猜,localhost 在 Windows 机器上,但实时服务器是 Linux?那么它可能是一个区分大小写的问题。 Linux 是区分大小写的操作系统。

模型文件datacomplete.php 应该是Datacomplete.php(注意大写第一个字符?),控制器autocomplete.php 应该是Autocomplete.php

【讨论】:

    【解决方案2】:

    您可以通过添加自定义路线来解决此问题。请将下面的行添加到 application/config/routes.php 文件中。

    $route['autocomplete/get-company-name'] = 'Autocomplete/GetCompanyName';
    

    您必须根据新的 URL 调整您的 JQuery AJAX 功能。也可以从 URL 中删除 index.php。请参考以下链接。

    https://www.codeigniter.com/userguide3/general/urls.html#removing-the-index-php-file

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多