【问题标题】:I can't retrieve my data from request AJAX in Laravel我无法从 Laravel 中的请求 AJAX 中检索我的数据
【发布时间】:2020-08-03 14:41:42
【问题描述】:

这是我 Blade 的代码,它可以工作并发送请求,但我无法从 AJAX 检索数据。

Javascript

function addUser() {
    var name=document.getElementById("name").value;
    var email=document.getElementById("email").value;
    var password=document.getElementById("password").value;

    $.ajaxSetup({
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
    });
    $.ajax({
        type:'POST',
        url:'addUser',
        data: {name:name,email:email,password:password,},
        success:function(data) {
            $("#msg").html(data.msg);
        },
        error: function (data, textStatus, errorThrown) {
            console.log(data);
        },
        contentType: false,
        processData: false,
    });
}

控制器

public function index(Request $request) {
    $msg=User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => bcrypt( $request->password),
    ]);
    return response()->json(array('msg'=> $msg), 200);
 }

【问题讨论】:

  • 可以显示结果dd($request->all())吗?
  • 到底发生了什么?您发送请求但被拒绝,或者您发送请求并取回数据但不知道如何解析?

标签: php ajax laravel


【解决方案1】:

删除

contentType: false,
processData: false,

processData 默认设置为true 并假定传递的数据是一个对象,将其设置为false 将阻止默认的解析行为——这是你不想要的!这在想要发送原​​始 JSON 的情况下可能会很好,但这与表单数据不同。

contentType 默认也作为application/x-www-form-urlencoded 传递。如果您将contentType 设置为false,则您没有设置任何内容标题!因此,通过删除这两个值,您将拥有正确的默认值以成功发送 ajax 调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 2017-06-23
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2021-10-06
    • 2020-01-09
    • 2019-06-26
    相关资源
    最近更新 更多