Я пытаюсь отправить значение с помощью Ajax в файл контроллера в Codeigniter, но безуспешно. Я искал эту проблему, и теперь этот вопрос задается здесь много раз, но все еще не может найти ответ. Надеюсь, кто-нибудь может мне помочь , Благодарность !

JS файл.

function submitSend()
{
    var message = $('#sms').val();
    if(message == "")
    {
      $("#sms").attr("placeholder", "Type a message please...");
      return false;
    }

    $.ajax(
    {
      url: "<?php echo base_url();?>/mychat/send",
      type: 'POST',
      data:{
              '<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>',
              'message': message
             },
      success: function (data)
      {
       window.console.log('Successful');
      },
      error :function(data)
      {
      window.console.log('Failed');
      }
    });
}

Функция контроллера. Она находится в файле под названием MyChat.

public function send()
  {
     $message = $this->input->post('message');
     echo $message;
  }
0
Armand Rexhmati 5 Мар 2018 в 03:31

4 ответа

Лучший ответ

Добавьте этот код в нижний колонтитул перед включением файла JS

<?php $CI =& get_instance(); ?>
<script> 
    var csrf_name = '<?php echo $CI->security->get_csrf_token_name(); ?>';
    var csrf_hash = '<?php echo $CI->security->get_csrf_hash(); ?>';
</script>

И просто вызывайте эти переменные везде, где вам нужно, вот так

data:{
     csrf_name : csrf_hash,
     'message': message
},
1
Umar Khan 5 Мар 2018 в 13:19

Скорее всего, это из-за токена CSRF, попробуйте отключить csrf и проверить, не связано ли это с csrf, а затем сделать белый список определенной функции в конфигурации csrf.

0
fayis003 5 Мар 2018 в 05:24

Боюсь, вы не можете использовать теги PHP в файлах JavaScript, поскольку вы упомянули, что у вас есть файл JS.

Вы должны запускать свои коды PHP в .php файлах.

Возможно, вы можете немного отделить свою функцию submitSend() и сделать ее более модульной, извлекая теги PHP и $('#sms').val(). Они могут быть переданы в функцию в качестве параметров из того места, где вы ее называете (.php файлы) .

0
Kamyar 5 Мар 2018 в 01:54

Вы не можете использовать тег php в файле js

url: "<?php echo base_url();?>/mychat/send", //this line in js file is wrong

Вы используете только тег php в теге script в файле .php, как это

<script>
 // ... some code here 
     url: "<?php echo base_url();?>/mychat/send",
 // ... some code here
</script>

Или добавьте эту строку в заголовок HTML

<script> 
    var BASE_URL = '<?php echo base_url(); ?>';
</script>

И использовать его в файле JS

....
url: BASE_URL+"mychat/send",
....
0
Ryuk Lee 12 Мар 2018 в 02:07