Codeigniter上的AutoSuggest(Ajax) - 404错误

时间:2014-08-03 07:24:12

标签: javascript php jquery ajax codeigniter

我有一个功能正常的php应用程序,完美地使用AutoSuggest JS脚本,现在我将相同的应用程序移植到codeigniter。我不太喜欢CI,这也是我想尝试这个的原因。 这个问题不起作用。下面是代码。

JS部分

  var options = {
        script:"/getPartnerLogo?",
        varname:"input",
        json:true,
        shownoresults:false,
        maxresults:6,
        callback: function (obj) { document.getElementById('partner1').value = obj.info;
        }
    };
    var as_json = new bsn.AutoSuggest('pt1', options);

控制器上的代码

function getPartnerLogo(){ 

    $aUsers = array(
      "HSBC",
      "Spinneys"
    );


    $aInfo = array(
      "HSB",
      "SPN"
    );

    $input = trim($this->input->get('input'));
    $len = strlen($input);
    $limit = 6;
    $aResults = array();
    $count = 0;

    if ($len)
    {
        for ($i=0;$i<count($aUsers);$i++)
        {

            if (strtolower(substr(utf8_decode($aUsers[$i]),0,$len)) == $input)
            {
                $count++;
                $aResults[] = array( "id"=>($i+1) ,"value"=>htmlspecialchars($aUsers[$i]), "info"=>htmlspecialchars($aInfo[$i]) );
            }

            if ($limit && $count==$limit)
                break;
        }
    }

    header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
    header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header ("Pragma: no-cache"); // HTTP/1.0

        header("Content-Type: application/json");

        echo "{\"results\": [";
        $arr = array();
        for ($i=0;$i<count($aResults);$i++)
        {
            $arr[] = "{\"id\": \"".$aResults[$i]['id']."\", \"value\": \"".$aResults[$i]['value']."\", \"info\": \"".$aResults[$i]['info']."\"}";
        }
        echo implode(", ", $arr);
        echo "]}";
    }

    }

现在,当我直接访问控制器时,它会正确返回json。

http://localhost/cd/getPartnerLogo?input=h

{“results”:[{“id”:“3”,“value”:“HSBC”,“info”:“HSB”}}}

但是当我尝试来自JS时它给了我404错误。当我跟踪网络调用表格检查元素时,响应是来自CI的默认404错误页面。

任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

检查您的请求网址 大多数情况下,当您使用 localhost 时,由于URL中的某些错误,ajax请求失败。

例如,您的脚本位于localhost/dc下,但您的ajax请求已发送至localhost/。 您可以在localhost上配置虚拟主机和设置域,或者在所有ajax请求上设置基本URL,必须是绝对URL。 要检查您的请求的位置,您可以在开发工具下的firefox / chrome网络选项卡中查看它们。