【问题标题】:How to pass data in $ .post ajax with php如何使用 php 在 $ .post ajax 中传递数据
【发布时间】:2019-09-15 09:16:14
【问题描述】:

大家早上好。我是 PHP 新手,需要 API 实现方面的帮助。

我需要通过 ajax.post 传递客户端数据、电子邮件和密码。当我直接进入 PHP 时,它可以完美运行。但是当我通过数据发送时,它会从服务器返回 500。

一个例子:

public function createUser(){
    $this->post("api/license-manager/users", [
        "email" => "xxxxxxxx@hotmail.com",
        "name" => "xxxx 232r4 xx"
    ]);
    return $this->result();
}

我希望它能这样工作:

var data = {
    'email': "xxxxx@test.com",
    'name': "Xxxxxx 001323"
}
$.ajax({
    type: "POST",
    url: '/midleware/createuser/',
    data: JSON.stringify(data),
    success: function(data){
        console.log(data)
    }
});

有人可以帮我吗?

【问题讨论】:

  • 服务器错误日志中有什么内容?
  • 现在什么都没有,为什么我不能测试。我无法创建一个变量或类似的东西来发送 ajax。我不能离开这里。我被困在这部分
  • 在 ajax 请求之前转到浏览器的检查和网络选项卡。然后发送请求并在响应部分得到实际错误。
  • 如果您收到 500 错误,则它来自服务器。您需要查看服务器错误日志中的内容。

标签: php ajax laravel laravel-5 request


【解决方案1】:

抱歉,我无法发表评论,但是您需要 50 REP。所以这里是一个答案,虽然这个问题似乎太模棱两可了,所以我在这里做出假设。请随意添加更多数据,以便我为您提供帮助。

当试图查看发生的事情时,我假设 createUser() 我无法弄清楚你想要完成什么,看起来你正在混合 JS 和 php。当您在 laravel 中与数据库交互时,您将处于一个动作中,该动作以某种 ajax 请求开始,并从您的 javascript 前端中的某些东西发送。我假设这是按照您的示例正确设置的。


var data = {
    'email': "xxxxx@test.com",
    'name': "Xxxxxx 001323"
}
$.ajax({
    type: "POST",
    url: '/midleware/createuser/',
    data: JSON.stringify(data),
    success: function(data){
        console.log(data)
    }
});

现在,您可能需要对标头做一些事情,请记住,如果您的 /midleware/createuser/ 路由在 routes/web.php 文件中,您需要以某种方式发送 CSRF 令牌,或者您需要发送如果您的路线位于 routes/api.php 部分,则为某种令牌。

一旦你正确地击中你的路由并将其推迟到控制器方法,例如,你可以在控制器中处理它或将它推迟到比一般请求具有一些优势的 FormRequest 对象。

您可以通过在“UserLicenceController”中使用此功能使您的控制器从 IOC 容器中解析您的请求。您可以在终端使用工匠命令发出请求

php artisan make:request CreateLicenseRequestForm

然后你可以在你的create函数中调用它,我使用这个约定


public function create(CreateLicenseRequestForm $form)
{
    return $form->persist()
}

然后在您的表单中,设置您的“$rules”数组以验证您需要的任何内容。就像用户只存在一次,并且已经付款或其他什么。您的授权功能可确保您有权实际提出请求,例如,可能有人正在玩弄路由并试图授予自己对另一个帐户的访问权限。

然后在您的 persist 方法中,一旦一切都得到验证并且满意,返回您的响应。如果是 JS 请求,您可能需要 JSON

类似


public function persist()
{
    //DO YOUR DB WORK HERE

    return response($message, $statusCode);
}

这可能比您需要的多或少,这取决于您对这些步骤的理解。随时跟进更多信息。

祝你好运。

【讨论】:

  • 这样是不行的,因为这篇文章是在第三方api中。我真正需要的是在数据上传递电子邮件和密码,而不是在第一个示例中直接使用它
  • 好的@rodrigo-santos 这对我来说太不清楚了。没有读懂你的想法,你就没有提出任何代码供我考虑。我所能看到的只是坦率地说看起来有点不寻常的东西。也永远不要通过听起来很危险的第 3 方 API 发送密码。您应该使用某种令牌身份验证或散列数据。话虽如此,除非您在问题之前和之后放弃一堆描述的代码,以便有人可以帮助您解决您不理解的问题部分,否则我看不出我或其他任何人可以如何进一步帮助您。
猜你喜欢
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2017-08-25
  • 1970-01-01
相关资源
最近更新 更多