【问题标题】:Codeigniter with ajax: success function not working带有ajax的Codeigniter:成功功能不起作用
【发布时间】:2019-10-12 19:06:11
【问题描述】:

我的 $.ajax 函数中的成功函数有问题 在javascript文件中:

$("#country select").change(function () { 
            var country_value = $(this).val(); 
            $.ajax({
                url:base_url + "Search_controller/testing_controller", 
                method: 'post',
                data: {country_val: country_value },
                dataType: 'json',
                success: function(data){
                    console.log('done : ' + data);  
                },
                   error: function (reponse) {
                console.log('Problem with ajax');
                }

            });

我的控制器功能

   <?php 

class Search_controller extends CI_Controller{

    public function index(){

    }


    public function testing_controller(){
        $data ="statessssssss";
        echo json_encode($data);
    }

  }
?>

**

问题是代码什么也没做,我不知道是什么问题 总是在浏览器日志“ajax 问题”中返回给我

**

【问题讨论】:

  • 在您的 $ajax 函数中:baseurl 似乎未定义,请阅读:stackoverflow.com/questions/8471945/…。您的浏览器控制台是否返回任何错误? (按 F12 显示控制台)
  • baseurl 已定义
  • 谢谢,但您的解决方案不起作用!!!!

标签: javascript php ajax codeigniter


【解决方案1】:

base_url() 是一个 Codeigniter 函数 (php),在您的 $ajax 函数中,您使用未定义的 javascript 变量 base_url。

为了让 php base_url() 进入你的 $ajax 函数,你需要回显 php 函数,改为这一行:

url: "<?php echo base_url() ?>Search_controller/testing_controller",

【讨论】:

  • 是 javascript 文件而不是 php 文件
  • base_url 是定义的,因为我在 $.ajax >> console.log(country_value + ' ' + base_url); 之后进行了测试工作完成,问题是控制器的ajax
  • 我试图解释:base_url 是在 Codeigniter 中设置的,对吧?现在你正在尝试在 javascript 中处理 base_url 的值。但这不起作用,您需要将其回显。我个人更喜欢只使用url:"/Search_controller/testing_controller" 但想解释一下,在 javascript 中使用 base_url 时你必须做什么
  • 我更改了网址,同样的问题没有响应,只是安慰我“ajax 的问题”!!!
  • 检查命名约定:你的控制器文件夹中是 Search_controller.php 吗?也许编辑您的问题添加控制器代码?
【解决方案2】:

如下更改您的网址

url:"<?php echo base_url()?>index.php/Search_controller/testing_controller",

我测试了您的代码及其工作文件。

【讨论】:

  • 如果你想包含 index.php,你可以使用 site_url(): codeigniter.com/user_guide/helpers/…
  • 我更改了网址,同样的问题没有响应,只是安慰我“ajax 的问题”!!!
【解决方案3】:

我发现解决方案是因为 CSRF 安全性

$("#country select").change(function () { 
             var country_value= $(this).val(); 
             var data = { /* params  */
                    "country": country_value,
                     "state": '001'
                };
              data[csfr_token_name] = $.cookie(csfr_cookie_name);
            $.ajax({
                url:base_url + "Search_controller/testing_controller", 
                method: 'post',
                data: data,
                dataType: 'json',
                success: function(data){
                    console.log('done : ' + data);  
                },
                   error: function (reponse) {
                console.log('Problem with ajax');
                }

            });

此代码有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2016-05-25
    相关资源
    最近更新 更多