【问题标题】:how to call a controller from a javascript method?如何从 javascript 方法调用控制器?
【发布时间】:2020-10-09 15:00:14
【问题描述】:

这是我的 javascript 代码:

function find_country(){

        var country_name = document.getElementById('searchBox');
        if(country_name == "")
    window.location.href = "https://localhost/teacherprivate";
        if(country_name != "")
    window.location.href = "<?php echo base_url('country-');?>"+country_name;
    }

这是我的路线:

$route['country-([a-zA-Z_-]+)']='Countries/get_countries_by_searchword/$1/$2';

我做错了什么?

【问题讨论】:

  • 当我按下搜索按钮时,我会一直使用默认控制器
  • 是否可以更改您的网址,例如:window.location.href = "&lt;?php echo base_url('country');?&gt;/"+country_name;
  • 不,还是不行
  • 当然不行,这只是一个问题,如果你可以改变你的链接结构
  • 我应该如何改变它?

标签: javascript php codeigniter


【解决方案1】:
$route['country-([a-zA-Z_-]+)']='Countries/get_countries_by_searchword/$1/$2';

此路由没有任何要通过 $1/$2 发送的可变数据

但您可以将链接结构更改为:

window.location.href = "<?php echo base_url('country/');?>"+country_name;

那么这条路线组合将起作用:

$route['country']='countries/get_countries_by_searchword';
$route['country/(:any)']='countries/get_countries_by_searchword/$1';

第一个覆盖没有 country_name 值的情况,第二个响应 country_name 有值。

在您控制器的 Countries.php 函数 get_countries_by_searchword() 中,变量 $country 对应于 $1。你这样写:

get_countries_by_searchword($country=''){
  if($country){
    // do something with $country
  }else{
    // handle empty $country 
  }
}

关于Codeigniter Uri Routing的信息

【讨论】:

  • 可能是你的 CI base_url 设置不正确,试试相对路径 window.location.href = "/country/"+country_name; 还要检查 country_name 是否有值,否则路由不工作
【解决方案2】:

当您需要向localhost 发出请求时,请确保使用http:// 而不是https://。你也可以简单地请求/teacherprivate,它告诉浏览器重用协议和主机名。

您还需要在国家名称不为空的情况下包含此正斜杠

window.location.href = "<?php echo base_url('county-');?>"+country_name;

变成

window.location.href = "<?php echo base_url('/country-');?>"+country_name;

window.location.href = "https://localhost/teacherprivate"; 变成window.location.href = "/teacherprivate";

此外,您正在存储文档元素本身,您需要它的值:"+country_name.value;

【讨论】:

  • localhost/aalamatlas/country-[object%20HTMLInputElement] 当我按下按钮时它把我带到这个网址,为什么?
  • 我没有得到你上面所说的,我该如何请求(/teacherprivate)?
  • 哦,是的,您需要元素的值,我将答案更新为+country_name.value
  • 非常感谢,但是路由还是不行
  • 当您点击按钮时,它至少会转到正确的网址吗?
猜你喜欢
  • 2012-06-12
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多