【问题标题】:how to pass values from ajax to controller on button click?如何在按钮单击时将值从 ajax 传递到控制器?
【发布时间】:2020-03-31 00:46:30
【问题描述】:

这是我在点击按钮时执行的 js 代码

    $("#search_tutor").click(function(){
    $("#show_tutors").hide();
    var subject = $( ".subject" ).val();
    var degree_level = $(".degree_level").val();
    var city = $(".city").val();
    console.log(subject);
    console.log(degree_level);
    console.log(city);
      $.ajax({
      url:"<?php echo base_url(); ?>public_controller/search_tutor_jquery",
      method:"post",
      data:{subject: subject, degree_level : degree_level, city : city},
      success:function(data){
        $('#search_results').html(data);

      }
    });

    });

这是控制器功能

        public function search_tutor_jquery(){
  $subject = strtolower($this->input->post('subject'));
  $degree_level = strtolower($this->input->post('degree_level'));
  $city = strtolower($this->input->post('city'));
  echo $subject; //prints nothing
  $data['filtered_tutors'] = $this->public_model->search($subject,$degree_level,$city);
  $this->load->view('public/search_results',$data);
}

值正在控制台中记录,但我无法在控制器中接收值。有人可以帮帮我吗? 提前致谢

【问题讨论】:

  • 浏览器控制台中的任何指示错误的内容?
  • 没有错误。值已成功记录在控制台上。只是无法在控制器中接收
  • 服务器日志中的任何错误
  • 没有错误..除了未定义的索引
  • 你使用jQuery,对吗?你没有标记它!无论如何添加dataType: 'json',如果您使用的是 1.9.0 之前的 jQuery 版本。更喜欢type: 'POST'而不是方法。那在你的$.ajax() 函数中。阅读$.ajax

标签: javascript php jquery ajax codeigniter


【解决方案1】:

什么意思

$('#search_results').load("<?php echo base_url('public_controller/search_tutor_jquery') ?>");

试试

$('#search_results').html(data);

了解load() 函数here。它发送一个新的空请求并将该数据加载到您的元素。它不加载响应。

【讨论】:

  • 我试过了。主要问题是数据没有发送到控制器。
  • 我用这种方法显示数据,效果很好。
  • 我在向控制器功能发送数据时遇到问题。
  • echo $subject; 的输出是什么?如果执行正确,发布模型代码和视图代码可能会有用。
  • 我在做 echo %_POST['subject'] 并且什么都没有显示
【解决方案2】:

您是否尝试过使用

$_POST['subject']

而不是

$this->input->post('subject')

?

【讨论】:

  • 它给出了未定义的索引。
  • 严重性:通知消息:未定义索引:主题文件名:controllers/Public_controller.php
  • 哎呀我的意思是 $_POST['subject'] 哈哈
  • 试试:$data = json_decode(file_get_contents("php://input"), true); $subject = $data['subject'];
  • 是的,在您提出建议后我现在已经尝试过了,但无法在控制器中获得价值。我正在打印 print_r($data);但它显示为空
猜你喜欢
  • 2014-03-26
  • 2018-01-17
  • 2018-01-29
  • 2020-03-12
  • 2021-09-02
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
相关资源
最近更新 更多