【问题标题】:When I pass string variables to controller in laravel via ajax, It doesn't show me proper data当我通过 ajax 将字符串变量传递给 laravel 中的控制器时,它没有显示正确的数据
【发布时间】:2022-01-09 11:36:42
【问题描述】:

这是我的 Ajax 查询

  function updateTask() {
    var task_id = document.getElementById('edit').getAttribute('edit_task_id');
    var newTask = document.getElementById('edit_task').value;
    var csrf = document.querySelector('meta[name="csrf-token"]').content;
    var close = document.getElementById('close');
    var editob = new XMLHttpRequest();
    editob.open('POST', '/{task_id}/{newTask}', true);
    editob.setRequestHeader('X-CSRF-Token', csrf);
    editob.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    editob.send("task_id=" + task_id, "newTask=" + newTask);
    
    console.log(newTask);
    console.log(task_id);
  }

这是你的控制器

    public function editTask($id, $newTask){
        //$x = $id->get('task_id');
         print_r($id);
         print_r($newTask);
         
    }

这是我得到的响应,但我实际上想要通过 ajax 传递的正确字符串值

【问题讨论】:

    标签: javascript php ajax laravel laravel-5


    【解决方案1】:

    实际上,您的脚本会显示您要求的正确数据

    editob.open('POST', '/{task_id}/{newTask}', true);
    

    您的网址看起来像这样。因为您发送的是字符串而不是值

    http://your-domain.com/{task_id}/{newTask}
    

    你需要做的是

    editob.open('POST',  `/${task_id}/${newTask}`, true);
    

    【讨论】:

    • 这个很好用,谢谢
    【解决方案2】:

    你在这里传递一个原始字符串

    editob.open('POST', '/{task_id}/{newTask}', true);
    

    这就是为什么,它适用于 php 而不是 js,供 JS 使用

    editob.open('POST', '/' + task_id + '/' + newTask, true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-16
      • 2017-11-20
      • 2020-02-26
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      • 2015-04-01
      相关资源
      最近更新 更多