Как передать данные в $ .post AJAX с PHP - PullRequest
0 голосов
/ 26 апреля 2019

Доброе утро, люди.Я новичок в 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)
    }
});

Можеткто-нибудь поможет мне?

1 Ответ

0 голосов
/ 26 апреля 2019

Извините, я не могу комментировать, однако вам нужно 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)
    }
});

теперь вам может понадобиться что-то сделать со своими заголовками, помните, что вам нужно каким-то образом отправить токен CSRF, если ваш / midleware / createuser / route находится в файле route / web.php, или вам нужно будет отправить какой-то токен, если ваш маршрут находится в разделе маршрутов / api.php.

Как только вы правильно проложите маршрут и передадите его, например, методу контроллера, вы можете обработать его в контроллере или передать его объекту FormRequest, который имеет некоторые преимущества по сравнению с общим запросом.

Вы можете заставить свой контроллер разрешить ваш запрос из контейнера IOC, используя эту функцию в вашем "UserLicenceController". Вы можете сделать запрос с помощью команды ремесленника на терминале

php artisan make:request CreateLicenseRequestForm

Затем вы можете вызвать его в своей функции создания, я использую это соглашение


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

Затем в вашей форме установите массив $ rules для проверки того, что вам нужно. Как пользователь существует только один раз, и заплатил или что-то еще. Ваша функция авторизации, позволяющая убедиться, что у вас есть полномочия на фактическое выполнение запроса, например, может быть, кто-то играет с маршрутами и пытается предоставить себе доступ к другой учетной записи.

Тогда в вашем постоянном методе, как только все будет проверено и удовлетворено, верните свой ответ. Если это запрос JS, вы, вероятно, хотите JSON

что-то вроде


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

    return response($message, $statusCode);
}

Это может быть намного больше, чем вам нужно, или намного меньше, в зависимости от вашего понимания шагов. Не стесняйтесь следить за дополнительной информацией.

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...