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_url
或site_url
作为url 路径
显示404错误,检查路由文件
检查控制台你有几个错误,Uncaught TypeError: Cannot read property 'parentElement' of null
,Uncaught 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 在本地但不在远程服务器上工作的主要内容,如果未能解决你的问题,请参考以下文章