【问题标题】:In codeigniter 4, I have issued a POST request using jQuery, but the request does not reach the server在codeigniter 4中,我使用jQuery发出了一个POST请求,但请求没有到达服务器
【发布时间】:2020-07-14 08:46:52
【问题描述】:

我正在将我的代码从 CI3 移植到 CI4。一直在 CI3 中工作的使用 jQuery 的 AJAX POST 请求未到达服务器代码。


这是客户端代码

$.ajax({
    url: 'recordCreate/' + serialCode,
    type: 'POST',
    data: {data: data},
    dataType : 'text',
}).done(function(result) {
    alert(result);
});

我的路线

$routes->post('recordCreate/(:alpha)', 'AjaxWrite::recordCreate/$1');

控制器就是这个

<?php namespace App\Controllers;
use CodeIgniter\Controller;
class AjaxWrite extends Controller{
  public function __construct()
  {
  }
  function recordCreate($serailCode)
  {
    echo urldecode($serailCode);
    echo $this->request->getPost('data');
  }
}

并包含在名为“AjaxWrite.php”的文件中

有了这个,我得到了错误

找不到控制器或其方法: App\Controllers\RecordCreate::qweq

其中 'qweq' 是我在 URL 中传递的 serialCode 的值。

【问题讨论】:

  • P;请轻松上传您的代码,以便其他人可以帮助您。
  • 检查您的路线。您可能需要为您的 AJAX URL 定义一个 $routes->post()。
  • 感谢@timbrownlaw 提供此信息。我对所有路线都使用了 $routes->get() 。它必须与路线有关。现在使用 $routes->post(),我收到错误 Controller or its method is not found: App\Controllers\ControllerMethod::parameter
  • 您能否将您的路线添加到您的问题中。你所描述的看起来不对。
  • 非常感谢@timbrownlaw。为什么在将路线从 $routes-&gt;get() 更改为 $routes-&gt;post() 后仍然出现错误,老实说,我不知道。你告诉我的是正确的 - 需要为你的 AJAX URL 定义一个 $routes->post()。因此,代码现在可以正常工作,因为它现在出现在问题上。非常感谢。

标签: jquery post get codeigniter-3 codeigniter-4


【解决方案1】:

CodeIgniter 4 是对框架的重写,不向后兼容。根据我目前的经验,将应用程序从版本 3 移植到 4 看起来也是在重写应用程序。

文档说...It is more appropriate to think of converting your app, rather than upgrading it

在版本 3 中,无论客户端代码如何发出请求,路由都是相同的。在第 4 版中,您的路线应该反映您在客户端的意图。

我使用 CI4 的第一个 AJAX 请求是 GET。当我第一次使用 POST 请求时,我通过隧道将请求发送到控制器 $routes-&gt;get() 并且是请求未到达控制器的原因。在 cmets 部分,您会看到 @timbrownlaw(可能对 CI 非常有经验)认为这是问题所在。

所以这里的解决方案是jQuery(客户端)的POST请求应该通过一个

$routes-&gt;post()

出现在问题代码中的路线。在@timbrownlaw 提供帮助之前,路线已经

$routes-&gt;get().

你可以看到more from the documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2017-03-06
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多