此服务器上的禁止访问

时间:2016-01-24 09:58:07

标签: javascript php jquery ajax codeigniter

我正在尝试使用AJAX填充文档的下拉列表。

但是我无法访问我的Supplies_controller,因为我被禁止了。

我的populate_dropdown.js文件位于与我的Supplies_controller文件不同的文件夹中。

这是我一直在犯的错误

enter image description here

这是我在populate_dropdown.js

中的代码
$(document).ready(function() {
    $.ajax({
       url: "<?php echo base_url('Supplies_controller/getCategory'); ?>",
       dataType: 'json',
       success: function(data) {
           alert(data);
           $(data).each(function(){
               $("#category").append($('<option>', {
                   value: this.id,
                   text: this.category,
               }));
           })
       }
   });
});

这是我的Supplies_controller中的代码

<?php
class Supplies_controller extends CI_Controller {

function __construct() 
{
    parent::__construct();
    $this->load->helper('url');
    $this->load->model('supplies_model');
}

public function getCategory(){
    $categories = $this->supplies_model->getCategory();
    echo json_encode($categories);
}

public function getSubcategory(){
    $category_id = $this->input->post('category');
    $subcategories = $this->supplies_model->getSubCategory($category_id);
    echo json_encode($subcategories);   
}

public function getSupply(){
    $subcategory_id = $this->input->post('category');
    $supplies = $this->supplies_model->getSubCategory($subcategory_id);
    echo json_encode($supplies);    
}

这是我的文件的层次结构

enter image description here

我的Supplies_controller位于控制器文件夹内,我的populate_dropdown.js文件位于js文件夹内。

请帮我找出错误。感谢。

3 个答案:

答案 0 :(得分:1)

尝试将base变量用于base_url

对于视图文件脚本

<script type="text/javascript">
$(document).ready(function() {
    var base_url = "<?php echo base_url();?>";

    $.ajax({
       url: base_url + "supplies_controller/getCategory",
       dataType: 'json',
       success: function(data) {
           alert(data);
           $(data).each(function(){
               $("#category").append($('<option>', {
                   value: this.id,
                   text: this.category,
               }));
           })
       }
   });
});
</script>

或者对于java脚本文件

$(document).ready(function() {

    $.ajax({
       url: "supplies_controller/getCategory",
       dataType: 'json',
       success: function(data) {
           alert(data);
           $(data).each(function(){
               $("#category").append($('<option>', {
                   value: this.id,
                   text: this.category,
               }));
           })
       }
   });
});

在你的config.php上设置你的base_url。

$config['base_url'] = 'http://localhost/yourproject/';
  

注意:确保您的资源文件夹位于应用程序文件夹的一侧。

答案 1 :(得分:0)

尝试更改此

url: "<?php echo base_url('Supplies_controller/getCategory'); ?>",

到这个

url: "<?php echo site_url('Supplies_controller/getCategory'); ?>",
啊,我现在看到你无法在javascript中运行php代码。 如果你想在javascript中使用基本网址,你需要这样的东西

url: location.protocol + "//" + location.host + "/ppmp/index.php/Supplies_controller/getCategory" ,

答案 2 :(得分:0)

您需要在包含js

之前复制网址
$(document).ready(function() {
    $.ajax({
       url: URL,
       dataType: 'json',
       success: function(data) {
           alert(data);
           $(data).each(function(){
               $("#category").append($('<option>', {
                   value: this.id,
                   text: this.category,
               }));
           })
       }
   });
});

然后在JS文件中,您可以使用变量URL

weaveByToString( "To[cxfbean:reservationService]" )