ajax json 在本地但不在远程服务器上工作

Posted

技术标签:

【中文标题】ajax json 在本地但不在远程服务器上工作【英文标题】:ajax json working on local but not on remote server codeigniter 【发布时间】: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) 【参考方案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

【讨论】:

以上是关于ajax json 在本地但不在远程服务器上工作的主要内容,如果未能解决你的问题,请参考以下文章

地理位置在本地工作,但不在远程服务器上

远程 fs.readFile 的问题? (在本地工作,但不在服务器上)[关闭]

请求在CURL中工作但不在Ajax中工作

Laravel MySQL 在本地计算机上工作但不在远程

本地html向远程的服务器发送aJax请求的问题

Pushsharp:IOS 通知在本地工作,但不在实时服务器上